当前位置: 首页 > 知识库问答 >
问题:

使用时区偏移值分析ZoneDateTime字符串

储嘉悦
2023-03-14

我正在尝试使用下面的ZonedDateTime对象行解析格式为“yyyy-MM-dd'T'HH:MM:ssZ”的ISO8601时间字符串:

ZonedDateTime date = ZonedDateTime.parse("2021-02-19T14:32:12+0000", DateTimeFormatter.ISO_ZONED_DATE_TIME);

然而,我得到以下错误时,这样做:

java.time.format.DateTimeParseException: Text '2021-02-19T14:32:12+0000' could not be parsed at index 19

我无法想象这是不允许的,因为符号是解析的有效字符。有人能帮忙解决这里的问题吗?

共有1个答案

晋承嗣
2023-03-14

看文档。

使用 DateTimeFormatter。模式(“uuu-MM-dd'T'HH:MM:ssxx”,Locale.ROOT)。或者,您可以使用 DateTimeFormatterBuilder

 
  new DateTimeFormatterBuilder()
    .append(DateTimeFormatter.ISO_DATE_TIME)
    .appendPattern("xx")
    .toFormatter(Locale.ROOT);

 

仅仅阅读Javadoc的摘要片段显然是不够的。如注释中所述, ISO_ZONED_DATE_TIME不严格要求区域id。第二个要点提到了它:“如果区域ID不可用或是区域偏移,那么格式就完整了”。

 类似资料:
  • 问题内容: 如何获取格式化为使用的日期? 如果我使用类似的格式 然后它显示 问题答案: 你可以得到区偏移格式一样用 的SimpleDateFormat 中 的Java 7 (),或与 乔达 的 DateTimeFormat ()。

  • 如何从不包含zone和其他字段的字符串中解析ZoneDateTime? 以下是在斯波克进行的测试: 前两个测试通过,所有其他测试都通过了DateTimeParseException: '2014-04-23T04:30:45.123'无法在索引23处解析 '2014-04-23T04:30'无法在索引16处解析 '2014-04-23'无法在索引10处解析 如何解析时间和区域设置为默认的不完整日期

  • 问题内容: 我需要下一个流程: nodejs utils api中有这种可能性吗? 问题答案: 您可以使用node-time,如下所示:

  • 问题内容: 我需要以[+/-] hh:mm的格式保存手机的时区 我正在使用TimeZone类来处理此问题,但是我只能获得以下格式: 我宁愿不对结果进行子串化,是否可以设置任何键或选项标志来仅获取值,而不获取该时区的名称(GMT / CET / PST …)? 问题答案: 我需要以[+/-] hh:mm的格式保存手机的时区 不,你没有。仅靠偏移量是不够的,您需要存储整个时区名称/ id。例如,我住在

  • JSON-API-response包含以下属性: 我使用Moshi和ThreeTenBp解析时间戳,并准备了以下自定义适配器: 如您所见,区域偏移量在这里是硬编码的。 ... 使用Moshi和Kotlin的高级JSON解析技术 相关项目的进行中的分支

  • 我使用的是“亚洲/曼谷”区域id。该偏移是从格林尼治时间UTC 07:00开始的。 但是当我做了下面的事情时,设置为“01/01/1900 7:00:00.000”时不是7:00 结果就是 周一一月一日07:00:00 ICT 1900 -402 周一一月一日06:00:00 ICT 1900 -420 我想知道偏移量是否在1900年1月1日早上7点左右发生了变化,所以我在维基百科上查了一下。ht