谁能解释为什么我在尝试解析日期时会得到这些值?
我尝试了三种不同的输入,如下:
1) 2013年第三周
Date date = new SimpleDateFormat("ww.yyyy").parse("02.2013");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
System.out.println(cal.get(Calendar.WEEK_OF_YEAR) + "." + cal.get(Calendar.YEAR));
哪个输出:02.2013
(如我所料)
2) 2013 年第一周
Date date = new SimpleDateFormat("ww.yyyy").parse("00.2013");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
System.out.println(cal.get(Calendar.WEEK_OF_YEAR) + "." + cal.get(Calendar.YEAR));
哪个输出:52.2012
(这对我来说很好,因为 2013 年的第一周也是 2012 年的最后一周)
3) 2013年第二周
Date date = new SimpleDateFormat("ww.yyyy").parse("01.2013");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
System.out.println(cal.get(Calendar.WEEK_OF_YEAR) + "." + cal.get(Calendar.YEAR));
哪个输出:1.2012
(这绝对使no对我来说感觉)
有谁知道为什么会发生这种情况?我需要解析格式为(一年中的一周).(年)的日期。我使用了错误的模式吗?
你正在使用ww
,这是“一周中的一周”,但是然后yyyy
这是“日历年”而不是“周年”。设置周周年然后设置日历年会产生问题,因为它们实际上只是单独的编号系统。
你应该使用YYYY
在您的格式字符串中指定周年...尽管不幸的是看起来您不能get以理智的方式体现价值。 (我期望Calendar.WEEKYEAR
常数,但不存在这样的东西。)
此外,一年中的周值从 1 开始,而不是 0...并且两周中没有周;它是either2013年第一周or这是 2012 年的最后一周……两者都不是。
如果可以的话,我个人会避免使用周年和周 - 它们可能会非常令人困惑,特别是当一个日历年中的日期位于不同的周年中时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)