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



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

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.ofLocalizedDateTime(FormatStyle.MEDIUM)
.withLocale(Locale.US);  
System.out.println(ldt.format(dateTimeFormatter));

输出:

Oct 21, 2021, 11:32:38 AM

直接的好处是我们不需要摆弄任何格式模式字符串,这总是一个容易出错的任务。另外两个优点是:1。用户可能会更喜欢内置格式,因为它是为了满足区域设置(以美国为例)中人们的期望而构建的;2. 这段代码很适合本地化:只要指定一个不同的语言环境,就能让不同文化的人满意。

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

最新更新