我在分析日期时得到了exeception。
以下是代码:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD");
Date d = format.parse("2014/02/20");
System.out.println(d);
不仅斜线/破折号错误,还使用了DD
(一年中的哪一天)而不是dd
(一个月中的哪几天)。您想要:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
和往常一样,阅读文档以了解模式符号的确切含义-如果您发现它的行为很奇怪,请根据数据仔细检查模式。
我也推荐:
- 如果可能的话,使用Joda Time(Java-8之前)或
java.time
(Java8);java.util.Date/Calendar
API太可怕了 - 明确指定区域设置
- 明确指定时区
当前您使用的是默认时区和区域设置。虽然区域设置在这种情况下可能无关紧要(除非它用于选择日历系统;我记不清了),但我认为明确指定它更清楚。时区肯定很重要;如果你只想把它当作一个日期(没有时间),那么指定UTC可能是值得的——这样就可以很容易地与其他任何东西进行互操作,并且你可以在底层毫秒表示中的明显位置获得日期边界。
您的日期格式与字符串不匹配。
Date d = format.parse("2014-02-20");
或
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");