java.text.ParseException: unparseable date: "2014/02/20"



我在分析日期时得到了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/CalendarAPI太可怕了
  • 明确指定区域设置
  • 明确指定时区

当前您使用的是默认时区和区域设置。虽然区域设置在这种情况下可能无关紧要(除非它用于选择日历系统;我记不清了),但我认为明确指定它更清楚。时区肯定很重要;如果你只想把它当作一个日期(没有时间),那么指定UTC可能是值得的——这样就可以很容易地与其他任何东西进行互操作,并且你可以在底层毫秒表示中的明显位置获得日期边界。

您的日期格式与字符串不匹配。

Date d = format.parse("2014-02-20");

SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");

最新更新