2

我有一个时间字符串,如下所示20170822T194135+00:如果我理解正确,这称为基本 ISO:8601 格式。

当我尝试使用 解析它时ZonedDateTime,它会抛出异常,抱怨它无法解析它。

那么,如何将此字符串转换为有效的 Joda 日期时间对象?

我是否需要构建手动“格式”来解析它(考虑到它是标准格式,这很愚蠢)?


绝望地,我实际上试图实现自定义格式:

const time = ZonedDateTime.parse(timeString, DateTimeFormatter.ofPattern(`yyyyMMdd'T'HHmmssZ`));

但是,它会在 column 上引发错误15。看起来它无法解析时区。我的实现是否正确?我如何使它工作?

4

1 回答 1

2

我可以使用文档x中描述的模式来做到这一点(这个模式接受像这样的偏移量)。+00

然后我直接解析为ZonedDateTime

const formatter = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmssx");

const time = ZonedDateTime.parse("20170822T194135+00", formatter);

结果time变量的值等于2017-08-22T19:41:35Z

内置格式化程序(例如ISO_LOCAL_DATE_TIME)无法解析这种格式,因此唯一的方法似乎是创建格式化程序。

于 2017-08-22T22:04:35.873 回答