【发布时间】:2019-08-23 08:26:22
【问题描述】:
我有一个 LocalDate 对象,但我正在努力使用 Java 8 中的 DateTimeFormatter 类以编程方式查找模式。有没有办法做到这一点或任何第三方库?
我尝试了以下方法,但我不想使用 DateFormat 类,因为不推荐这样做。
LocalDateTime.parse("8/22/19 4:39 PM").format(DateTimeFormatter.ofPattern(pattern1).withLocale(Locale.getDefault()))
“打印这是我想要的 -> M/d/yy h:mm a(我真的想要'mm/dd/yyyy h:mm')
虽然如果我尝试使用上面的模式字符串来解析日期字符串,它会失败。给我这个例外”
Exception in thread "main" java.time.format.DateTimeParseException: Text '8/22/19 4:39 PM' could not be parsed at index 0
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.LocalDateTime.parse(LocalDateTime.java:492)
“我想要这种行为的原因是在我们的 i18n 文件中配置了特定于区域设置的日期模式。如果这些不可用(未配置),我需要提供 jdk 区域设置/区域特定的日期模式。DateFormat 类有点给我,但不完全是”
【问题讨论】:
-
你说你有一个 LocalDate 对象那么你为什么要解析一个字符串呢?请注意,LocalDate(或日期)没有格式,您可以在要将日期对象转换为字符串时选择格式。
-
在我们的 i18n 文件中配置了特定于语言环境的日期模式。如果这些不可用(未配置),我需要提供 jdk 区域设置/区域特定日期模式。 DateTimeFormatter 有点给我,但不完全是。见上文。
-
要获得您想要的模式,然后您自己提供它(为什么要尝试获得只是“有点正确”的东西?)。请参阅下面的答案或查看检索当前语言环境并使用它。
-
您是否建议按国家/地区设置所有预定义格式并按区域设置访问它们?
-
我的印象是你想要一种格式,也许你应该澄清你的问题。
标签: java datetime-format