Java SimpleDateFormat解析奇怪

时间:2015-05-01 14:41:28

标签: java simpledateformat

我很困惑为什么这不起作用。无论我改变什么,它打印出同样的东西。这是怎么回事?

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/YYYY");
String s = "11/22/2000";
Date d = sdf.parse(s);
System.out.println(d.toString());

输出:Sun Dec 26 00:00:00 CST 1999

2 个答案:

答案 0 :(得分:6)

您使用的是YYYY,这是一周而不是“正常”年份。这通常只用于星期和星期的说明符。

这里的确切行为很难解释 - 可行,但不是非常有用。基本上解决方案是“不要那样做”。您需要格式字符串MM/dd/yyyy - 请注意yyyy

的大小写

(作为旁注,如果您可以使用Java 8或Joda Time中的java.time.*,那么您将有更多时间在Java上处理日期/时间问题。它不会影响这个特定问题,但这通常是个好主意......)

答案 1 :(得分:1)

使用

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy")

而不是

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/YYYY");