小编Vic*_*lov的帖子

Java 8 DateTimeFormatter使用偏移拒绝正确的ISO 8601日期/时间

我使用DateTimeFormatter的格式字符串:uuuu-MM-dd'T'HH:mm:ssX

必须支持所有可能的时区偏移格式,包括:Z,00,00:00,0000

根据官方的DateTimeFormatter文档,'X'限定符必须与这些格式的偏移匹配:

X区偏移'Z'表示零偏移-X Z; -08; -0830; -08:30; -083015; -08:30:15;

但事实上,事实并非如此

输入字符串:"2014-01-01T00:30:00 + 00:00"

result: java.time.format.DateTimeParseException:无法解析文本'2014-01-01T00:30:00 + 00:00',在索引22处找到未解析的文本

输入字符串:"2014-01-01T00:30:00Z"

结果:正确

代码:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssX");
OffsetDateTime parsed = OffsetDateTime.parse(dateTimeAsString, formatter);
Run Code Online (Sandbox Code Playgroud)

JDK 1.8.0_192(Oracle,而不是OpenJDK)

java time date iso8601

4
推荐指数
2
解决办法
465
查看次数

标签 统计

date ×1

iso8601 ×1

java ×1

time ×1