要么我不明白这个方法getActualMaximum(int)
或字段 WEEK_OF_YEAR,或者涉及 Sun bug(或全部三个)...有人可以向我解释为什么吗(至少在德国语言环境中...)以下代码:
Locale.setDefault( Locale.GERMAN );
Calendar c = Calendar.getInstance();
c.set( Calendar.YEAR, 2010 );
c.set( Calendar.MONTH, 0 );
c.set( Calendar.DAY_OF_MONTH, 1 );
System.out.println("max: "+c.getActualMaximum( Calendar.WEEK_OF_YEAR ));
System.out.println("actual: "+c.get( Calendar.WEEK_OF_YEAR ));
产生以下输出:
max: 52
actual: 53
这是 JavadocgetActualMaximum(int)
:
返回最大值
指定的日历字段可以有,
给定此日历的时间值。
例如,实际最大值
在某些情况下,MONTH 字段的值为 12
年,以及其他年份的 13 年
希伯来历法系统。
Edit
情节变得更加复杂。在英语语言环境中 (-Duser.language=en -Duser.country=us
)输出是:
max: 52
actual: 1
似乎表明这是德国语言环境的 Sun 错误?
此信息是正确的:
max: 52
actual: 53
2010 年最多有 52 周。实际周数为 53,因为 2009 年最多有 53 周,并且大多数周从星期日或星期一开始。大多数情况下,第一周是一年中的第一周,一月份有 4 天。由于 1 月 1 日这一周在 2010 年只有 2 或 3 天,因此该周被视为 2009 年的一部分。
英语语言环境很可能对确定第一周有不同的规则,例如第一周是 1 月 1 日那一周。
维基百科的解释是正确的:维基百科周文章 http://en.wikipedia.org/wiki/Seven-day_week#Week_numbering
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)