gpt4 book ai didi

java - SimpleDateFormat 中的日期字符串解析不正确

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:00:07 26 4
gpt4 key购买 nike

我正在尝试将 UTC 格式的字符串格式日期转换为日期对象,这会导致转换中断几分钟。

SimpleDateFormat fullDateFormater = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS", Locale.US);
fullDateFormater.setTimeZone(TimeZone.getTimeZone("UTC"));

在解析日期字符串之前是 - 2014-07-07T18:24:23.788810

解析后日期为 Tue Jul 08 00:07:31 GMT+05:30 2014

正确的日期转换是 Tue Jul 07 23:54:23 GMT+05:30 2014

转换过程中大约有 12-13 分钟的差异。我观察到转换中有 10 分钟范围内的差异。

知道出了什么问题吗?

最佳答案

SSSSSS 正在解析几毫秒 - 而不是您期望的微秒。

788810 毫秒是 13 分 8 秒 810 毫秒。所以你的结果实际上是 2014-07-07T18:27:31.810。

是的,这是一个非常愚蠢的 API 设计。 much S...S 表示“几分之一秒”而不是“毫秒” - 但这远不是关于 pre 的最糟糕的事情-Java-8 日期/时间 API :(

认为没有办法用 SimpleDateFormat 解析微秒 - Java-8 之前的 Java 时间 API 的精度无论如何都是毫秒 - 所以我认为你只需用 substring 截掉最后三位数字,然后在格式字符串末尾使用 SSS 对其进行解析。

如果您使用的是 Java 8,我强烈建议您使用 java.time,我相信它可以处理这种情况。 (我没有看过它的解析API,但我相信它会没事的。)

关于java - SimpleDateFormat 中的日期字符串解析不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24617587/

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