微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在2010年12月31日返回1作为一年的一周?

如何解决为什么在2010年12月31日返回1作为一年的一周?

Year of Year的定义是Locale依赖的。

其他帖子中讨论了在美国如何定义。例如在德国(DIN 1355-1 / ISO 8601):一年的第一周*是新年中具有四天或以上的第一周。

*一周的第一天是星期一,一周的最后一天是星期日

JavaCalendar注重语言环境。例如:

public static void main(String[] args) throws ParseException {

    DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    Date lastDec2010 = sdf.parse("31/12/2010");

    Calendar calUs = Calendar.getInstance(Locale.US);       
    calUs.setTime(lastDec2010);

    Calendar calDe = Calendar.getInstance(Locale.GERMAN);       
    calDe.setTime(lastDec2010);

    System.out.println( "us: " + calUs.get( Calendar.WEEK_OF_YEAR ) ); 
    System.out.println( "de: " + calDe.get( Calendar.WEEK_OF_YEAR ) );
}

印刷品:

us: 1
de: 52

添加 对于美国(我认为墨西哥也是如此),每年的1.星期是1月1日所属的星期。-因此,如果1. Januar是星期六,则之前的星期五(12月31日)属于同一周,在这种情况下,这一天属于2011年1月。

解决方法

例如:

Calendar c = Calendar.getInstance();
DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
c.setTime( sdf.parse("31/12/2010"));
out.println( c.get( Calendar.WEEK_OF_YEAR ) );  

版画1

乔达时间也是如此。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。