【发布时间】:2019-10-05 10:10:40
【问题描述】:
我正在尝试解析格式为“2019 年 3 月 1 日”或“2019 年 3 月 15 日”格式的日期,但我正在努力寻找正确的模式。
我已经尝试过使用模式“dd M/L yyyy”和简单的“d M/L yyyy”的示例,但似乎都不起作用。
String begda = "1 March 2019";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd M/L yyyy");
LocalDateTime ldtBeg = LocalDateTime.parse(begda, formatter);
它只会抛出一个 DateTimeParseException 说明它无法被解析。
【问题讨论】:
-
一个问题 - 你需要使用 LocalDate 而不是 LocalDateTime 因为你没有时间组件。
-
请注意,“dd”的意思是“一个月中的零填充日”,这看起来不像您在“2019 年 3 月 1 日”中看到的那样。
-
感谢您的 cmets。我切换到对我有用的 LocalDate 和模式“d MMMM yyyy”。需要注意的一件重要事情,这导致了我的其他问题:“March”的解析还取决于语言环境,并且我的测试数据和计算机上的语言环境不匹配。
-
当文档说
M/L month-of-year时,您误会了。这意味着M或L。您需要结合以下内容阅读它:“模式字母'L'、'c'和'q'指定文本样式的独立形式。”一些语言环境具有单独的独立形式的月份名称。既然你有一个完整的日期,你不应该在这里使用它,即你不应该使用L,即你应该使用M。