如何将 LocalDateTime 日期转换为特定格式?

How to convert a LocalDateTime date to a particular format?

您好,我有一小段 Java 代码片段。我正在使用 Java 8。我有一个 Java LocalDateTime 对象,我想格式化它。请在下面查看我的代码。

String dateUTC = "2021-10-21T10:32:38Z";
Instant i =  Instant.parse(dateUTC);
LocalDateTime ldt = i.atZone(ZoneId.of("Europe/London")).toLocalDateTime();

我想将 LocalDateTime 对象 ldt 打印为以下格式的字符串:

 Oct 21 2021 11:32:38 AM

我怎样才能做到这一点?

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd MMM yyyy HH:mm:ss a");  
System.out.println(  ldt.format(dateTimeFormatter));

使用内置的本地化格式

你能接受输出中的逗号吗?

    DateTimeFormatter dateTimeFormatter
            = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)
                    .withLocale(Locale.US);  
    System.out.println(ldt.format(dateTimeFormatter));

输出:

Oct 21, 2021, 11:32:38 AM

直接的好处是我们不需要 fiddle 任何格式模式字符串,这总是一个容易出错的任务。两个进一步的优势是: 1. 用户可能会更喜欢内置格式,因为它的构建符合当地人的期望(例如美国); 2. 代码非常适合本地化:只需指定不同的语言环境即可让不同文化的人开心。