我有一些旧版 KML 文档,其中包含时间戳条目。
为什么使用 Instant 解析时以下日期无效?这两种方法都假设解析 ISO 8601 格式的日期。
字符串日期字符串 =“2017-12-04T08:06:60Z”
Using
java.time.Instant.parse(dateString)
抛出错误
"DateTimeParseException Text 2017-12-04T08:06:60Z could not be parsed at index 0."
然而,当使用
Date myDate = javax.xml.bind.DatatypeConverter.parseDateTime( dateString )
myDate 解析正确......
-
60
秒不是有效时间。意味着这是无效的2017-12-04T08:06:60Z
,如果是 60 秒,那么分钟应该增加并且your时间将是2017-12-04T08:07:00Z
-
使用有效日期,然后解析String会工作得很好:
String date = "2017-12-04T08:07:00Z";
System.out.println(Instant.parse(date));
java.time 也忽略leap秒。来自docs https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html:
使用 JSR-310 API 的 Java 时间刻度的实现不是
需要提供任何亚秒级精度的时钟,或者
单调或平稳地进行。因此,实施是
不需要实际执行 UTC-SLS 转换或以其他方式
意识到闰秒。然而,JSR-310 确实要求
实现必须记录他们在定义时使用的方法
代表当前时刻的时钟。有关详细信息,请参阅时钟
可用时钟。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)