【发布时间】:2014-05-08 12:48:11
【问题描述】:
谁能解释为什么我在尝试解析日期时会得到这些值? 我尝试了三种不同的输入,如下所示:
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(这对我来说绝对没有意义)
有人知道为什么会这样吗?我需要以格式(一年中的星期)解析日期。(年)。我使用了错误的模式吗?
【问题讨论】:
-
提示:考虑改变您的周格式以遵循ISO 8601 标准定义的明确格式。像这样:
2014-W19。然后Joda-Time 库可以帮助您使用内置在ISODateTimeFormat 工厂中的格式化程序来解析和生成此类字符串。
标签: java parsing simpledateformat