Java 6下如何用Joda Time解析带Z标识的特定日期格式
解决Joda Time解析带Z的ISO日期格式报错问题
你的报错原因是自定义格式串未匹配日期字符串末尾的Z标识。Z是ISO 8601格式中代表UTC时区的标记,你的格式串yyyy-MM-dd'T'HH:mm:ss只覆盖到秒部分,没有处理最后的Z,导致解析失败。
解决方案1:使用Joda Time预定义的ISO格式(推荐)
Joda Time提供了专门处理ISO 8601日期的预定义格式化器,无需手动编写格式串,直接解析带Z的日期:
String dateString = "2022-08-02T23:00:59Z"; DateTimeFormatter formatter = ISODateTimeFormat.dateTime(); DateTime dateTime = formatter.parseDateTime(dateString);
解决方案2:修改自定义格式串匹配Z
如果你坚持使用自定义格式串,有两种写法:
- 将
Z作为字面量处理(用单引号包裹):
String pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'"; String dateString = "2022-08-02T23:00:59Z"; DateTimeFormatter formatter = DateTimeFormat.forPattern(pattern); DateTime dateTime = formatter.parseDateTime(dateString);
- 将
Z作为时区标识处理(Joda Time会自动识别为UTC+00:00):
String pattern = "yyyy-MM-dd'T'HH:mm:ssZ"; String dateString = "2022-08-02T23:00:59Z"; DateTimeFormatter formatter = DateTimeFormat.forPattern(pattern); DateTime dateTime = formatter.parseDateTime(dateString);
注意:确保你使用的Joda Time版本兼容Java 6(推荐2.x系列版本,均支持Java 6)。
内容的提问来源于stack exchange,提问作者Bakou99
相关产品推荐
相关产品推荐

