如何解析缺少分钟的日期时间字符串2019-10-12T07Z?
解决Java解析不含分钟的ISO格式日期时间字符串问题
需要解析格式为2019-10-12T07Z的日期时间字符串(仅包含小时,无分钟),原代码如下:
import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; public class App { public static void main( String[] args ) { // 期望解析后输出2019-10-12T07:00:00Z OffsetDateTime offSetDateTime = OffsetDateTime.parse("2019-10-12T07Z"); System.out.println(offSetDateTime.format(DateTimeFormatter.ISO_DATE_TIME)); } }
运行后抛出异常:
Exception in thread "main" java.time.format.DateTimeParseException: Text '2019-10-12T07Z' could not be parsed at index 13 at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949) at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851) at java.time.OffsetDateTime.parse(OffsetDateTime.java:402) at java.time.OffsetDateTime.parse(OffsetDateTime.java:387) at com.test.offset.offset.App.main(App.java:16)
期望输出:
2019-10-12T07:00:00Z
问题原因
OffsetDateTime.parse()默认使用DateTimeFormatter.ISO_OFFSET_DATE_TIME格式化器,该格式要求时间部分必须包含小时和分钟(格式为HH:mm),而输入字符串仅提供了小时,不符合格式要求,因此解析失败。
解决方案
自定义一个兼容仅小时+时区格式的DateTimeFormatter,同时保留对标准ISO格式的支持,代码修改如下:
import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; import java.time.temporal.ChronoField; public class App { public static void main( String[] args ) { // 自定义格式化器:支持仅小时+时区的格式,同时兼容标准ISO格式 DateTimeFormatter formatter = new DateTimeFormatterBuilder() .appendPattern("yyyy-MM-dd'T'HHX") .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0) .parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0) .toFormatter() .withResolverStyle(java.time.format.ResolverStyle.SMART); OffsetDateTime offSetDateTime = OffsetDateTime.parse("2019-10-12T07Z", formatter); System.out.println(offSetDateTime.format(DateTimeFormatter.ISO_DATE_TIME)); } }
代码说明
appendPattern("yyyy-MM-dd'T'HHX"):定义匹配输入字符串的格式,X代表时区偏移(这里的Z是UTC时区的简写)。parseDefaulting:为缺失的分钟、秒字段设置默认值0,解析后会自动补全00:00。withResolverStyle(SMART):使用智能解析模式,确保字段缺失时能正确应用默认值。
运行修改后的代码,即可得到期望的输出:2019-10-12T07:00:00Z。
内容的提问来源于stack exchange,提问作者prasanth
相关产品推荐
相关产品推荐

