Java SimpleDateFormat 解析异常
Java SimpleDateFormat parsing oddity
我很困惑为什么这不起作用。无论我将日期更改为什么,它都会打印出相同的内容。这是怎么回事?
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
您使用的 YYYY
是周年而不是 "normal" 年。这通常只与星期几和一年中的星期说明符一起使用。
这里的 确切 行为很难解释 - 可行,但不是很有帮助。基本上解决方案是"don't do that"。您需要 MM/dd/yyyy
的格式字符串 - 请注意 yyyy
.
的大小写
(作为旁注,如果您可以使用 Java 8 或 Joda Time 中的 java.time.*
,您将在 Java 和 date/time 问题。它不会影响这个特定问题,但通常是个好主意...)
使用
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy")
而不是
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/YYYY");
我很困惑为什么这不起作用。无论我将日期更改为什么,它都会打印出相同的内容。这是怎么回事?
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
您使用的 YYYY
是周年而不是 "normal" 年。这通常只与星期几和一年中的星期说明符一起使用。
这里的 确切 行为很难解释 - 可行,但不是很有帮助。基本上解决方案是"don't do that"。您需要 MM/dd/yyyy
的格式字符串 - 请注意 yyyy
.
(作为旁注,如果您可以使用 Java 8 或 Joda Time 中的 java.time.*
,您将在 Java 和 date/time 问题。它不会影响这个特定问题,但通常是个好主意...)
使用
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy")
而不是
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/YYYY");