如何使用 Zulu 时间解析ISO 8601格式的字符串?
javax.xml.bind.DatatypeConverter.parseDateTime("2010-12-16T13:33:50.513852Z")
返回
IllegalArgumentException: '2010-12-16T13:33:50.513852Z' weist ein falsches Format auf.
这意味着格式错误,有人知道这里有什么问题吗?
如何使用 Zulu 时间解析ISO 8601格式的字符串?
javax.xml.bind.DatatypeConverter.parseDateTime("2010-12-16T13:33:50.513852Z")
返回
IllegalArgumentException: '2010-12-16T13:33:50.513852Z' weist ein falsches Format auf.
这意味着格式错误,有人知道这里有什么问题吗?
它适用于我在线尝试 ide
输出是:
java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT+00:00",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2010,MONTH=11,WEEK_OF_YEAR=1,WEEK_OF_MONTH=1,DAY_OF_MONTH=16,DAY_OF_YEAR=1,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=13,MINUTE=33,SECOND=50,MILLISECOND=513,ZONE_OFFSET=0,DST_OFFSET=0]
如果目标数据类型是“ ZonedDateTime ”,您可以使用日期格式化程序“yyyy-MM-dd'T'HH:mm:ss.SSSSSSX”。示例代码如下:
public ZonedDateTime convertStringToZonedDateTime() {
String inputString = "2010-12-16T13:33:50.513852Z";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSX");
ZonedDateTime zdt = ZonedDateTime.parse(inputString, formatter);
return zdt; //Output ZonedDateTime object is 2010-12-16T13:33:50.513852Z
}
注意力!如果输入日期字符串的秒和毫秒为 0,例如“2010-12-16T13:00:00.000000Z”,则输出 ZonedDateTime 对象为“2010-12-16T13:00Z”,即使看起来奇怪的是没有秒和毫秒,它仍然是一个合法的 ZonedDateTime。
如果目标数据类型是“即时”:
public Instant convertStringToInstant() {
String inputString = "2010-12-16T13:33:50.513852Z";
Instant instant = Instant.parse(inputString);
return instant; //Output Instant object is 2010-12-16T13:33:50.513852Z
}
您发布的代码在我的 jre 中运行良好。可能您定义了自己的 DatatypeConverter (带有德语异常文本......!)并且这个特定的 DatatypeConverter 无法解析这个日期。
对此代码进行代码搜索:DatatypeConverter.setDatatypeConverter(
- 在那里您可能会找到“DatatypeConverterInterface”的自定义实现 - 然后可能会导致您的错误。
或者,您可以搜索weist ein falsches Format auf.
(因为异常文本不是 jre 的一部分)
维尔·埃尔福格 ;)