【发布时间】:2021-12-29 20:29:43
【问题描述】:
我正在尝试将您在下面的代码中看到的日期格式化为字符串,以便能够将其作为 LocalDateTime 对象,但我遇到了一个异常,我正在遵循本指南https://mkyong.com/java8/java-8-how-to-convert-string-to-localdate/,但不幸的是,它没有像我下面的日期这样的例子,有人可以帮我看看吗?我真的很感激:)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE MMM d hh:mm:ss zzz yyyy", Locale.US);
String date = "Wed Nov 18 00:00:00 COT 2020";
LocalDateTime localDateTime = LocalDateTime.parse(date, formatter);
System.out.println(localDateTime);
System.out.println(formatter.format(localDateTime));
我得到:
java.time.format.DateTimeParseException: Text 'Wed Nov 18 00:00:00 COT 2020' 无法在索引 0 处解析
【问题讨论】:
-
@user16632363 已编辑问题,删除日期前的 5 后仍然无法正常工作
-
请给出比“不工作”更详细的问题描述。
-
DateTimeFormatter 的 Javadoc 对模式字母的数量有什么说法?
-
如果你有
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US );,那么你可以解析它。但是 LocalDateTime 不包含 TimeZone -
提示:生成此类本地化字符串仅用于向用户展示。所以你不应该需要解析这些值。特别是,您使用的不是唯一的 2-4 个字符伪区域!因此解析只能猜测您打算在多个时区中的哪个时区。相反,要以文本方式序列化日期时间值,请仅使用标准 ISO 8601 格式。
标签: java java-time datetime-parsing localdatetime datetimeformatter