gpt4 book ai didi

Java SimpleDateFormat 无法正确解析(我使用正确的大写/小写字母..)

转载 作者:行者123 更新时间:2023-12-01 20:05:38 25 4
gpt4 key购买 nike

我知道这个问题已经被问过好几次了,我冒着被否决/重复关闭的风险,但这里发布的大多数问题都是通过将 YYYY 改成 yyyy 来解决的。所以,搜索并没有真正的帮助:/

这些是 block 内给定的时间戳

date new Block: 2017-11-02T06:17:05.079481
date old Block: 2017-11-02T06:17:04.608960

我的转换代码:

 public static Date getDate(JSONObject block){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS");
try {
return sdf.parse(block.get("timestamp").toString());
} catch (ParseException e) {
e.printStackTrace();
return new Date(0);
}
}

这是解析的结果

date new block: Thu Nov 02 06:18:24 KST 2017 
date old block: Thu Nov 02 06:27:12 KST 2017

这怎么可能?如时间戳所示,新 block 是在旧 block 之后创建的。但现在情况正好相反

最佳答案

How is that possible? The new block was created before the old block, as seen in the timestamp. but now it is the other way around

SimpleDateFormat 格式字符串中的

S 始终表示毫秒 - 而不仅仅是您目前假设的“秒的几分之一”。

您的"new" block 被解析为增加了 79481 毫秒,而“旧” block 则增加了 608960 毫秒。

这解释了结果,但并没有给你前进的方向。这里有两个选项:

  • 使用 java.time.* - 这是一个更现代的 API,具有纳秒精度而不是毫秒精度。
  • 删除输入的最后三个字符,并解析为仅毫秒精度。

关于Java SimpleDateFormat 无法正确解析(我使用正确的大写/小写字母..),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47453797/

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