【发布时间】:2019-12-17 08:36:45
【问题描述】:
我想从下面的字符串中获取 LocalDate 或 LocalDateTime。
2019 年 1 月 1 日 12:00:00 AM
我已经尝试了以下代码,但出现以下错误:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM d, yyyy hh:mm:ss a"); // also with dd
formatter = formatter.withLocale(Locale.GERMAN);
LocalDateTime localDateTime = LocalDateTime.parse(stringDate, formatter);
LocalDate localDate = LocalDate.parse(stringDate, formatter);
Exception in thread "main" java.time.format.DateTimeParseException: Text 'Jan 1, 2019 12:00:00 AM' could not be parsed at index 0
我想要的日期最终会是这样的
- 01.01.2019。本地日期
- 01.01.2019。 12:00 本地日期时间(24 小时)
这甚至可能吗?相反,使用正则表达式会不会有点过头了?
【问题讨论】:
-
“哪个不工作” - 你能详细说明一下吗?
-
我的错。我收到以下错误:线程“main”中的异常 java.time.format.DateTimeParseException: Text 'Jan 1, 2019 12:00:00 AM' could not be parsed at index 0
-
我会抛出同样的异常,但如果我删除
formatter = formatter.withLocale(Locale.GERMAN);则不会(我假设我的Locale默认为US)。 -
@JacobG WFM。但我使用的是 Java 8。您使用的是未来版本吗? 9 中的一些语言环境更改并不完全向后兼容 IIRC。
-
@MichaelBerry 我正在使用 Java 12 对其进行测试,所以这是可能的。