Java日历-一周的第一天VS实际最小值

洛根·马兹

我正在测试我们的日期管理框架的一部分,该框架应该重置一些Calendar字段(使用实际的minimum)。

然而,当改变周的第一天日历总是返回SUNDAY1)的实际最小周的一天是虫子吗?

MVCE

import java.util.*;

public class Main {
  public static void main(String[] args) {
    System.out.printf("Java specification: %s%n", System.getProperty("java.vm.specification.version"));
    System.out.printf("Java version: %s%n", System.getProperty("java.specification.version"));
    System.out.printf("VM version: %s%n", System.getProperty("java.vm.version"));

    Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));

    int[] days = { 1, 5, 7 };
    for (int day : days) {
      cal.setTimeInMillis(0L);
      cal.setFirstDayOfWeek(day);
      System.out.printf("expected: %d, actual: %d%n", day, cal.getActualMinimum(Calendar.DAY_OF_WEEK));
    }
  }
}
凯瓦尔

您应该使用cal.getFirstDayOfWeek()来代替cal.getActualMinimum(Calendar.DAY_OF_WEEK)

因为cal.getActualMinimum(Calendar.DAY_OF_WEEK)将始终返回星期日,请查看java源代码中getActualMinimum(Calendar.DAY_OF_WEEK)的实现

  public int getActualMinimum(int field) {
        if (field == DAY_OF_MONTH) {
            GregorianCalendar gc = getNormalizedCalendar();
            int year = gc.cdate.getNormalizedYear();
            if (year == gregorianCutoverYear || year == gregorianCutoverYearJulian) {
                long month1 = getFixedDateMonth1(gc.cdate, gc.calsys.getFixedDate(gc.cdate));
                BaseCalendar.Date d = getCalendarDate(month1);
                return d.getDayOfMonth();
            }
        }
        return getMinimum(field);
    }

而getMinimum是:-

   public int getMinimum(int field) {
        return MIN_VALUES[field];
    }

MIN_VALUES数组定义为:-

 static final int MIN_VALUES[] = {
        BCE,            // ERA
        1,              // YEAR
        JANUARY,        // MONTH
        1,              // WEEK_OF_YEAR
        0,              // WEEK_OF_MONTH
        1,              // DAY_OF_MONTH
        1,              // DAY_OF_YEAR
        SUNDAY,         // DAY_OF_WEEK
        1,              // DAY_OF_WEEK_IN_MONTH
        AM,             // AM_PM
        0,              // HOUR
        0,              // HOUR_OF_DAY
        0,              // MINUTE
        0,              // SECOND
        0,              // MILLISECOND
        -13*ONE_HOUR,   // ZONE_OFFSET (UNIX compatibility)
        0               // DST_OFFSET
    };

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一周的第一天和日历周

来自分类Dev

从IE中的日历开始一周的第一天

来自分类Dev

在Unity日历中将星期日设置为一周的第一天

来自分类Dev

Android日历:一周的第一天和最后一天->零个月

来自分类Dev

如何在GNOME日历小程序中将星期一设置为一周的第一天?

来自分类Dev

如何在GNOME日历小程序中将星期一设置为一周的第一天?

来自分类Dev

如何在系统任务栏日历中设置一周的第一天?

来自分类Dev

如何在 Kendo React UI 日历库中更改一周的第一天

来自分类Dev

使用java.time查找一年中最后一周的第一天

来自分类Dev

获取最近x个日历周的第一天和月份

来自分类Dev

如何使用IntlDateFormatter(本地日历)获取月份的第一天和最后一天

来自分类Dev

Python获取当前日历季度的第一天和最后一天

来自分类Dev

如何使用IntlDateFormatter(本地日历)获取月份的第一天和最后一天

来自分类Dev

SSRS表达式-从周值中查找一周的第一天

来自分类Dev

SSRS表达式-从周值中查找一周的第一天

来自分类Dev

在 php 中获取一周的第一天/最后一天?

来自分类Dev

根据每月的第一天计算出第一个日历周六

来自分类Dev

不正确前一天的Java日历

来自分类Dev

使用Calendar.SATURDAY作为一周的最后一天时,Holo日历崩溃

来自分类Dev

如何使用Apache DateUtils来获取第一天到第一天的最后一个月的时间[JAVA]?

来自分类Dev

TSQL-查找一周的第一天或第二天

来自分类Dev

在JavaFX的DatePicker中设置一周的第一天

来自分类Dev

在LINQ语句中检查一周的第一天

来自分类Dev

使用momentJs获取基于语言环境的一周的第一天

来自分类Dev

在Powershell中如何确定一周的第一天?

来自分类Dev

如何在PostgreSQL中更改一周的第一天

来自分类Dev

在没有WeekCalendarUnit的情况下获取一周的第一天

来自分类Dev

是语言或基于国家对JVM第一天的一周?

来自分类Dev

如何获得一周的第一天,某个地区/国家

Related 相关文章

  1. 1

    一周的第一天和日历周

  2. 2

    从IE中的日历开始一周的第一天

  3. 3

    在Unity日历中将星期日设置为一周的第一天

  4. 4

    Android日历:一周的第一天和最后一天->零个月

  5. 5

    如何在GNOME日历小程序中将星期一设置为一周的第一天?

  6. 6

    如何在GNOME日历小程序中将星期一设置为一周的第一天?

  7. 7

    如何在系统任务栏日历中设置一周的第一天?

  8. 8

    如何在 Kendo React UI 日历库中更改一周的第一天

  9. 9

    使用java.time查找一年中最后一周的第一天

  10. 10

    获取最近x个日历周的第一天和月份

  11. 11

    如何使用IntlDateFormatter(本地日历)获取月份的第一天和最后一天

  12. 12

    Python获取当前日历季度的第一天和最后一天

  13. 13

    如何使用IntlDateFormatter(本地日历)获取月份的第一天和最后一天

  14. 14

    SSRS表达式-从周值中查找一周的第一天

  15. 15

    SSRS表达式-从周值中查找一周的第一天

  16. 16

    在 php 中获取一周的第一天/最后一天?

  17. 17

    根据每月的第一天计算出第一个日历周六

  18. 18

    不正确前一天的Java日历

  19. 19

    使用Calendar.SATURDAY作为一周的最后一天时,Holo日历崩溃

  20. 20

    如何使用Apache DateUtils来获取第一天到第一天的最后一个月的时间[JAVA]?

  21. 21

    TSQL-查找一周的第一天或第二天

  22. 22

    在JavaFX的DatePicker中设置一周的第一天

  23. 23

    在LINQ语句中检查一周的第一天

  24. 24

    使用momentJs获取基于语言环境的一周的第一天

  25. 25

    在Powershell中如何确定一周的第一天?

  26. 26

    如何在PostgreSQL中更改一周的第一天

  27. 27

    在没有WeekCalendarUnit的情况下获取一周的第一天

  28. 28

    是语言或基于国家对JVM第一天的一周?

  29. 29

    如何获得一周的第一天,某个地区/国家

热门标签

归档