我有一个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类提供了我,但不完全是”

最佳答案

这是一个使用DateTimeFormatter从String转换为String的示例。请注意,我使用LocalDateTime而不是LocalDate,因为还包括时间。

DateTimeFormatter formatterWithTime = DateTimeFormatter.ofPattern("MM/dd/yy h:mm a").withLocale(Locale.US);

String outWithTime = formatterWithTime.format(LocalDateTime.now());
System.out.println(outWithTime);

String in = "08/22/19 4:39 PM";
LocalDateTime ldt = LocalDateTime.from(formatterWithTime.parse(in));
System.out.println(ldt);


此打印


  19/08/23上午10:44
  2019-08-22T16:39

关于java - java-有没有办法获取给定日期字符串或从LocalDate的模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57622410/

10-17 03:10