如何在 Java 中将日期/时间/区域格式化为与 UTC 的偏移量模式?

Ole*_*dro 1 java utc datetimeformatter

我有时间戳。例如:

OffsetDateTime timestamp = OffsetDateTime.parse("2022-12-23T12:00:00.000+02:00");
Run Code Online (Sandbox Code Playgroud)

如何通过 DateTimeFormatter 对其进行格式化?我找不到我需要的格式模式:

"23.12.2022 at 12:00 (UTC+2)"
Run Code Online (Sandbox Code Playgroud)

并且无法创建新的,因为当我使用时:

"23.12.2022 at 12:00 (UTC+2)"
Run Code Online (Sandbox Code Playgroud)

然后我得到 UTC+02,但我们需要 UTC+2。

附加问题:我们可以通过模式获取单词UTC吗?

Swe*_*per 5

您可以使用该DateTimeFormatterBuilder.appendOffset方法,它支持各种偏移格式。选择一个小时内没有 0 填充的选项。

\n
DateTimeFormatter formatter = \n    new DateTimeFormatterBuilder()\n         .appendPattern("dd.MM.uuuu \'at\' HH:mm (\'UTC\'")\n         .appendOffset("+H:mm:ss", "+0")\n         .appendLiteral(")")\n         .toFormatter();\n
Run Code Online (Sandbox Code Playgroud)\n

如果您希望“UTC”成为模式符号的一部分,那么这将是本地化偏移量(O ),这意味着这取决于区域设置。

\n

仅作为概念证明 (:D),我发现法语语言环境调用偏移量“UTC\xc2\xb1x”。

\n
DateTimeFormatter formatter = \n    DateTimeFormatter.ofPattern("dd.MM.uuuu \'at\' HH:mm (O)")\n        .withLocale(Locale.FRENCH);\n
Run Code Online (Sandbox Code Playgroud)\n

尽管在其他区域设置中,您会得到“GMT\xc2\xb1x”。

\n