java.text.ParseException:无法解析的日期:“2014/02/20”

时间:2015-04-27 10:41:40

标签: java

我在解析日期时遇到了异常。

以下是代码:

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD");
    Date d = format.parse("2014/02/20");
    System.out.println(d);

2 个答案:

答案 0 :(得分:3)

您不仅错误地使用斜线/短划线,而且还使用DD(一年中的某天)而不是dd(月中的某天)。你想要:

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

与往常一样,阅读the documentation以确切了解模式符号的含义 - 如果您发现它的行为很奇怪,请非常小心地检查数据

推荐:

  • 如果可能的话,使用Joda Time(Java-8之前的版本)或java.time(Java 8); java.util.Date/Calendar API非常糟糕
  • 明确指定区域设置
  • 明确指定时区

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

答案 1 :(得分:1)

您的dateformat与您的字符串不匹配。

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

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