Java / convert ISO-8601 (2010-12-16T13:33:50.513852Z) to Date object
如何用Zulu时间解析ISO 8601格式的字符串?
1 | javax.xml.bind.DatatypeConverter.parseDateTime("2010-12-16T13:33:50.513852Z") |
回报
1 |
这意味着错误的格式,任何人都有一个线索在这里错在哪里?
TL;博士
1 | Instant.parse("2010-12-16T13:33:50.513852Z" ) |
java.time
较新的java.time类可以处理此字符串输入。
结尾的
1 | Instant instant = Instant.parse("2010-12-16T13:33:50.513852Z" ); |
时区
您可能需要应用时区
转变
最好避免麻烦的旧遗留类
关于java.time
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧遗留日期时间类,例如
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
要了解更多信息,请参阅Oracle教程。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
-
Java SE 8和SE 9及更高版本
- 内置。
- 带有捆绑实现的标准Java API的一部分。
- Java 9增加了一些小功能和修复。
-
Java SE 6和SE 7
- 许多java.time功能都被反向移植到Java 6& 7在ThreeTen-Backport。
-
Android的
- ThreeTenABP项目特别适用于Android的ThreeTen-Backport(如上所述)。
- 请参见如何使用ThreeTenABP ....
ThreeTen-Extra项目使用其他类扩展了java.time。该项目是未来可能添加到java.time的试验场。您可以在这里找到一些有用的类,例如
它适用于我在线尝试ide
输出是:
1 | 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] |
您发布的代码在我的jre中运行良好。可能你定义了自己的DatatypeConverter(带有德语异常文本......!),这个特定的DatatypeConverter无法解析这个日期。
为这段代码做一个代码搜索:
或者,您可以搜索
Viel Erfolg;)