我使用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)