问题描述
我一直试图将String解析为Date,但是,转换无法正常工作。
例如,我有这些字符串,它们是从网络服务中检索的。
Dec 9,2016 4:36:00 PM
Jan 12,2017 11:36:15 AM
我尝试使用这些格式,但是,转换失败。
MMM d,yyyy HH:mm:ss aaa
MMM d,yyyy hh:mm:ss a
我在哪里错了?
我收到此异常java.text.ParseException: Unparseable date: "Dec 9,2016 4:36:00 PM"
解决方法
请检查时间格式:
String dateString1 = "Dec 9,2016 4:36:00 PM";
String dateString2 = "Jan 12,2017 11:36:15 AM";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM d,yyyy h:mm:ss a");
LocalDateTime localDateTime1 = LocalDateTime.parse(dateString1,formatter);
LocalDateTime localDateTime2 = LocalDateTime.parse(dateString2,formatter);
System.out.println(localDateTime1);
System.out.println(localDateTime2);
在这种情况下(时间部分)看到的格式为:h:mm:ss a
(因为小时是4,而不是04),所以格式hh:mm:ss a
将失败
对于您的输入,打印内容为:
2016-12-09T16:36
2017-01-12T11:36:15
这只是@ C.P.O答案的变体,其使用的模式略有不同。
uses-feature
一些注意事项:
- y是“时代”
- 你是“年”
- 需要MMM。在您的情况下,“ M”和“ MM”均无效。
- 我更喜欢“ s”而不是“ ss”,因为“ s”将同时解析2和12,但是“ ss”将无法解析“ 2”
我不知道使用'y'而不是'u'的真正影响。