gpt4 book ai didi

java - 使用 Java 8 java.time api 解析 ISO 时间戳(仅限标准版)

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:16 25 4
gpt4 key购买 nike

我无法从示例中的字符串中获取纪元的毫秒数。到目前为止,我已经尝试了这三种不同的方法,示例显示了最新的尝试。似乎总是归结为 TemporalAccessor不支持 ChronoField .如果我能成功构造一个 Instant 实例,我就可以使用 toEpochMilli() .

String dateStr = "2014-08-16T05:03:45-05:00"
TemporalAccessor creationAccessor = DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse(dateStr);
Instant creationDate = Instant.from(creationAccessor);

请给出简洁的答案(不要从头开始构建格式化程序)并仅使用 java 8 标准发行版(我可以用 Joda 做到这一点,但想避免依赖)。

编辑: 上面代码中的 Instant.from 抛出:java.time.DateTimeException: Unable to obtain Instant from TemporalAccessor: {OffsetSeconds=-18000},ISO resolved to 2014-08 -16T05:03:45 类型为 java.time.format.Parsed

最佳答案

这似乎是我在 jdk1.8.0_20b19 之前的所有测试版本中发现的一个错误,包括 jdk1.8.0_20 但在最终的 Instant 中没有。所以 downloading an up-to-date jdk version 会解决这个问题。在最近的jdk1.9也解决了。

请注意,旧的 Java 7 方法适用于所有版本:

long epochMillis = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX")
.parse(dateStr).getTime();

它还支持获取 ojit_code :

Instant i=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX").parse(dateStr).toInstant();
long epochMillis = i.toEpochMilli();

但是,如前所述,一个简单的更新就能让您的 Java 8 代码正常工作。

关于java - 使用 Java 8 java.time api 解析 ISO 时间戳(仅限标准版),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25735583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com