【问题标题】:Minimal Days In First Week of the Year in JavaJava 一年中第一周的最少天数
【发布时间】:2014-12-30 06:35:27
【问题描述】:

我实际上正在使用实用程序类 Calender。 我发现自己很困惑,

方法

getFirstDayOfWeek() 
returns the first day of the week;
e.g., SUNDAY in the U.S., MONDAY in France.

getMinimalDaysInFirstWeek()
returns the minimal days required in the first week of the year. e.g., 
if the first week is defined as one that contains the first day of the
first month of a year, this method returns 1. If the minimal days required
must be a full week, this method returns 7.

我住在印度 (UTC+05:30) 钦奈、加尔各答、孟买、新德里。 该时区不实行夏令时。

为了获得一年中的一周,我这样编码

Calendar calendar = Calendar.getInstance();
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));   // returns 45 

45 只有在 Java 处理

时才有可能
WeekNumber   FromDate                       ToDate
Week 01      December 30, 2013              January 5, 2014  // December 30 is Monday
Week 45      November 3, 2014(Monday)       November 9, 2014

Java 需要最少几天才能变成一个完整的一周变成 7 天吗?因为我可以通过 setMinimalDaysInFirstWeek() 来改变它。又会有什么影响?

【问题讨论】:

    标签: java calendar java.util.calendar


    【解决方案1】:

    它与一年中一周中的天数有关。除非您对周年感兴趣,否则它可能与您无关。默认情况下,我希望它是 4,因为这是正常的 ISO-8601 值。

    我不确定这是否与“一周的第一天”部分相互作用——您需要检查一下,但听起来确实如此。它不应该与您的时区有任何关系。

    但是,例如,2014 年的周年从 2013 年 12 月 30 日开始,正是因为这给出了 2014 年的 5 天。如果您查看其他年份,您会发现 X 日历年 1 月的前几天是在第 X-1 周的第 52 周或第 53 周。

    【讨论】:

    • 确实是 4。文档很好地说明了这一点。例如,1998 年 1 月 1 日是星期四。如果 getFirstDayOfWeek() 为 MONDAY 且 getMinimalDaysInFirstWeek() 为 4(ISO 8601 标准兼容设置),则 1998 年的第 1 周从 1997 年 12 月 29 日开始,到 1998 年 1 月 4 日结束。最后三天的一周年份为 1998 年1997 年的日历年。但是,如果 getFirstDayOfWeek() 是 SUNDAY,则 1998 年的第 1 周从 1998 年 1 月 4 日开始,到 1998 年 1 月 10 日结束; 1998 年的前三天是 1997 年第 53 周的一部分,他们的周年是 1997 年。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 2020-04-03
    相关资源
    最近更新 更多