gpt4 book ai didi

java - SimpleDateFormat.format() 给出无效日期

转载 作者:行者123 更新时间:2023-11-30 07:58:38 25 4
gpt4 key购买 nike

final static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

此方法生成了无效日期:

public static String getDate(double seconds) {
Date date = new Date((long)(seconds * 1000));
return dateFormat.format(date);
}

不知何故 1465235513.09794 变成了 "2015-06-31T02:33:31.921+0000" - 有趣的部分是 6 月 31 日。

有什么线索吗?

最佳答案

大胆猜测,您是否在多线程程序中使用它。如果是这样,SimpleDateFormat 就不是线程安全的。我宁愿将 dateFormat 移动到 getDate() 方法中。来自Javadoc

Date formats are not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally.

或使用 Java 8 java.time & DateTimeFormatter正如 Jon Skeet 所建议的那样。

来自Javadoc

A formatter created from a pattern can be used as many times as necessary, it is immutable and is thread-safe.

或按照 Adrian Shum 的建议使用 Joda 时间(如果您出于任何原因不能使用 Java 8)。

关于java - SimpleDateFormat.format() 给出无效日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40278164/

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