gpt4 book ai didi

java - SimpleDateFormat 的毫秒输出错误 ( SSSSSSS )

转载 作者:行者123 更新时间:2023-12-01 21:47:54 26 4
gpt4 key购买 nike

我正在使用 java.text.SimpleDateFormat 解析 MS SQL 日期,但它给出了错误的输出。根据SimpleDateFormat的文档,它应该正确解析,或者可能是我遗漏了一些东西。

System.out.println( new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss.SSSSSSS" ).parse( "2016-02-29 13:02:50.2870000 +00:00" ) );
Incorrect Output with milliseconds format
>> Mon Feb 29 13:50:40 PKT 2016

但是,如果我在没有 SSSSS 的情况下尝试,它会给我预期的结果。

System.out.println( new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ).parse( "2016-02-29 13:02:50.2870000 +00:00" ) );
Correct Output without milliseconds format
>> Mon Feb 29 13:02:50 PKT 2016

为什么会有47分50秒的差别?

最佳答案

您已指定 2870000 毫秒 - 即 47 分 50 秒。

需要注意的是,在 SimpleDateFormat 中,S 是一个毫秒说明符,而不是“秒的分数”说明符。基本上,如果您指定的值超过 SSS,结果就会很糟糕。

现在就您的问题而言 - 如果您从数据库获取日期,则根本不应该有一个 string 值来解析 - 您应该有一个 java.lang.String 值。 sql.Datejava.sql.Timestamp。如果您将日期/时间数据存储为文本,那么您应该单独解决这个问题。

如果您必须进行此解析,我只需截掉最后四位数字并在末尾使用 .SSS 进行解析即可。无论如何,java.util.Date 不可能保持亚毫秒精度。

或者,您可以使用 java.time 或 Joda Time 作为更好的日期/时间 API - 并且 java.time 支持纳秒精度。 DateTimeFormatter内,S 格式说明符确实表示“秒的分数”。

关于java - SimpleDateFormat 的毫秒输出错误 ( SSSSSSS ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35717573/

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