我在解析日期时遇到了异常。
以下是代码:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD");
Date d = format.parse("2014/02/20");
System.out.println(d);
答案 0 :(得分:3)
您不仅错误地使用斜线/短划线,而且还使用DD
(一年中的某天)而不是dd
(月中的某天)。你想要:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
与往常一样,阅读the documentation以确切了解模式符号的含义 - 如果您发现它的行为很奇怪,请非常小心地检查数据 。
我也推荐:
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");