【问题标题】:DateTimeFormatter is not working with ofPattern nor OFFSET [closed]DateTimeFormatter 不适用于 ofPattern 或 OFFSET [关闭]
【发布时间】:2019-07-31 04:22:58
【问题描述】:

我尝试使用 Java buildIn DateTimeFormatter 将 Datestring 格式化为 OffsetDateTime。我的 DateTimeFormatter 没有按预期工作。

字符串为:“2018-11-12T14:55:17 +0100”

DateTimeFormatter.ofPattern("yyyy-MM-dd'T'hh:mm:ssZ");
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'hh:mm:ssZZZZZ");
DateTimeFormatter.ISO_OFFSET_DATE_TIME;

我预计,使用 DateTimeFormater,我将获得正确的 OffsetDateTime。有人可以帮我摆脱这种情况吗?

【问题讨论】:

标签: java datetime-format


【解决方案1】:

我找到了解决办法:

DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss X");

Big HH 和 X facepalm

【讨论】:

  • 感谢您回答自己的问题(您也可以接受自己的回答)。我得到2019-08-04T09:24:36 +02。两点: (1) 根据 ISO 8601,ssX 之间不应有空格。 (2) 对于四位偏移量,小时和分钟,如+0200,使用两个Xs。所以yyyy-MM-dd'T'HH:mm:ssXX.
【解决方案2】:

不需要任何格式化程序,你可以直接将字符串解析成OffsetDateTime,去掉空格并在分钟和秒之间添加冒号

OffsetDateTime time = OffsetDateTime.parse("2018-11-12T14:55:17+01:00");
System.out.println(time);

在 ISO-8601 日历系统中与 UTC/格林威治有偏移的日期时间,例如 2007-12-03T10:15:30+01:00。

【讨论】:

    猜你喜欢
    • 2022-01-03
    • 1970-01-01
    • 2013-05-23
    • 2015-03-16
    • 1970-01-01
    • 2023-04-01
    • 2023-03-15
    • 2014-06-21
    • 1970-01-01
    相关资源
    最近更新 更多