我正在尝试将String
解析为Data
,我创建了DataParser,根据日期格式,我编写的代码是这样的:
String date_s = "04-May-2017 17:28:27";
DateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss");
Date date;
try {
date = formatter.parse(date_s);
System.out.println(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
当我执行这个时,我总是遇到异常
java.text.ParseException: Unparseable date: "04-May-2017 17:28:27"
我不明白为什么数据没有被解析,有人可以帮助我吗?
最佳答案
如果没有现代解决方案,这条答案就不会完整。现在,您不应再使用 Date
和 SimpleDateFormat
,而是切换到较新的日期和时间类:
DateTimeFormatter formatter
= DateTimeFormatter.ofPattern("dd-MMM-yyyy HH:mm:ss", Locale.ENGLISH);
LocalDateTime dateTime;
try {
dateTime = LocalDateTime.parse(date_s, formatter);
System.out.println(dateTime);
} catch (DateTimeParseException e) {
System.err.println(e);
}
这会打印
2017-05-04T17:28:27
(LocalDateTime.toString()
返回 ISO 8601 格式)如果省略 Locale.ENGLISH
,在我的计算机上我会得到
Text '04-May-2017 17:28:27' could not be parsed at index 3
索引 3 是五月
的位置,因此该消息有些帮助。
LocalDateTime
和 DateTimeFormatter
是在 Java 8 中引入的,但也已向后移植到 Java 6 和 7。
关于Java从字符串中解析日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44066459/