无时区±符号的日期字符串是否为合法Java日期格式?
问题解答
这个字符串不是合法的Java标准日期字符串。
Java的日期时间解析逻辑(比如DateTimeFormatter依赖的格式规则)中,时区偏移部分必须包含+或-符号,用来明确该时区相对于UTC是东偏移还是西偏移。你遇到的"2022-08-22T10:18:00.000 10:00"缺少时区符号,既不符合ISO-8601标准,也不被Java的标准日期解析器认可。
你之前能正常解析的几个示例,都是因为时区部分带了合法的正负符号:
"2022-08-20T00:03:00.000+10:00"→ 用yyyy-MM-dd'T'HH:mm:ss.SSSXXX解析,+10:00是标准带符号偏移"2022-08-20T00:03:00.000 +10:00"→ 用yyyy-MM-dd'T'HH:mm:ss.SSS XXX或yyyy-MM-dd'T'HH:mm:ss.SSS X解析,同样带+符号符合规则
如果需要解析这个有问题的字符串,你可以考虑两种方案:
- 联系API提供者,修改响应格式,让时区部分带上正负符号,符合标准规范
- 自定义解析逻辑,比如默认给无符号的时区偏移补
+(假设是东时区),再进行解析
内容的提问来源于stack exchange,提问作者Jan Camiones
相关产品推荐
相关产品推荐

