Epa*_*aga 4 java calendar week-number
要么我不理解方法getActualMaximum(int)或字段WEEK_OF_YEAR,要么涉及到Sun漏洞(或全部三个)......有人可以向我解释为什么(至少在德语区域设置中 ......)以下代码:
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 ));
Run Code Online (Sandbox Code Playgroud)
产生以下输出:
max: 52
actual: 53
Run Code Online (Sandbox Code Playgroud)
这是Javadoc getActualMaximum(int):
给定此Calendar的时间值,返回指定日历字段可能具有的最大值.例如,MONTH字段的实际最大值在某些年份为12,在希伯来日历系统中为其他年份的13.
编辑
情节变粗.在英语语言环境(-Duser.language=en -Duser.country=us)中,输出为:
max: 52
actual: 1
Run Code Online (Sandbox Code Playgroud)
似乎指出它是德国语言环境的Sun bug?
这些信息是正确的:
max: 52
actual: 53
Run Code Online (Sandbox Code Playgroud)
2010年最多为52周.实际的一周是53,自2009年以来最多53周,大多数星期从星期日或星期一开始.大多数情况下,第1周是一年中的第一周,1月份是4天.由于2010年1月1日的一周只有2或3天,因此本周被视为2009年的一部分.
很可能英语语言环境有不同的规则来确定第1周,就像第一周是1月1日这一周.
维基百科正确解释:维基百科周文章
| 归档时间: |
|
| 查看次数: |
11982 次 |
| 最近记录: |