这个问题在这里已经有答案了:
java.text.parseexception:无法解析的日期:“01:19 pm”(6个答案)
java-无法解析的日期(3个答案)
上个月关门了。
尝试将日期字符串解析为java.util.date时出现异常。
这就是我要做的,
String format = "yyyy-MM-dd hh:mm a";
String strDateTime = "2016-03-04 11:30 am";
SimpleDateFormat sdformat = new SimpleDateFormat(format);
try {
Date date = sdformat.parse(strDateTime);
System.out.println(sdformat.format(date));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
得到这个了吗
java.text.ParseException: Unparseable date: "2016-03-04 11:30 am"
at java.base/java.text.DateFormat.parse(DateFormat.java:396)
at testing.MainClass.main(MainClass.java:18)
我已经这样做了很多次,而且模式看起来是正确的。可能我没有看到我做错了什么,我使用的是Java8,我在eclipse中的执行环境也是Java8。直到今天,这个代码仍然运行良好。
但是,如果我将日期字符串更改为a.m.=> "2016-03-04 11:30 a.m."
成功解析输出: 2016-03-04 11:30 a.m.
此行为与localdatetime相同。
java.time.format.DateTimeParseException: Text '2016-03-04 11:30 am' could not be parsed at index 17
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2050)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1952)
at java.base/java.time.LocalDateTime.parse(LocalDateTime.java:493)
at testing.MainClass.main(MainClass.java:27)
所有的例子 SimpleDateFormat
我在网上看到只使用“上午/下午”而不是“上午/下午”。我在这里可能做错了什么-谢谢
1条答案
按热度按时间dz6r00yl1#
我相信这是一个地区问题-在
en_US
您的代码工作成功。您可以使用如下循环打印与每个区域设置关联的am/pm标记文本:这表明,例如
en_CA
区域设置使用您描述的格式:如果您想使用'am'和'pm'(或者'am'和'pm'-它看起来不区分大小写),您可以强制
en_US
创建格式化程序时的区域设置: