Java SimpleDataFormat解析异常
我很困惑为什么这不起作用。不管我把日期改成什么,它都会打印出同样的内容。这是怎么回事Java SimpleDataFormat解析异常,java,simpledateformat,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您使用的是yyy,它是周年,而不是“正常”年。这通常只与星期几和一年
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
您使用的是yyy
,它是周年,而不是“正常”年。这通常只与星期几和一年中的星期说明符一起使用
这里的确切行为很难解释——可行,但没有太大帮助。基本上,解决办法是“不要那样做”。您需要的格式字符串是MM/dd/yyyy
——请注意yyyy
的大小写
(作为旁注,如果您可以使用java 8或Joda time中的java.time.*
,您在java中的日期/时间问题会更好。这不会影响此特定问题,但通常是个好主意……使用
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy")
而不是
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/YYYY");
我想了解一下
YYYY
格式是如何工作的,因为它在英国Locale
(Mon Jan 03 00:00:00 EET 2000
)产生了不同的结果。如果Java有一个类型安全的格式化程序来防止像这样容易出错,那就太好了(同样是dd
和MM
的情况)。哇,毁掉一切是多么愚蠢的事情啊!我工作的需求是大写的,所以我只是盲目地使用它。