【发布时间】:2021-06-18 13:41:09
【问题描述】:
我有一个时区为EST 的日期输入。
我将其解析为ZonedDateTime,但在格式化时,它显示为GMT-04:00,而不是我所期望的EST。
为什么会发生这种情况 - 我可以让它显示我期望的时区吗?
例子
final String dateString = "16/07/2017 19:28:33 EST";
final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss z");
System.out.println(MessageFormat.format("Input - {0}", dateString));
System.out.println(MessageFormat.format("Parsed - {0}", formatter.format(ZonedDateTime.parse(dateString, formatter))));
输出:
Input - 16/07/2017 19:28:33 EST
Parsed - 16/07/2017 19:28:33 GMT-04:00
我的时区是格林威治标准时间。采用OpenJDK 14.0.2.12,en_GB 语言环境。
就上下文而言,我试图在最新版本的 Amazon Corretto 11 中更好地理解这个问题 - https://github.com/corretto/corretto-11/issues/147
【问题讨论】:
-
我认为你可以将
.withZone(ZoneId.of("EST"))添加到DateTimeFormatter.ofPattern(...) -
您当前所在的时区是 GMT-4 吗?
-
@daniu no - 我在格林威治标准时间。
-
@Savior AdoptOpenJDK 14.0.2.12,en_GB 语言环境。
-
我使用
Locale.UK复制。有趣的。它解析为2017-07-16T19:28:33-04:00[America/New_York],这并不奇怪,但随后格式化为16/07/2017 19:28:33 GMT-04:00,坦率地说,这对我来说是这样。
标签: java date java-time zoneddatetime