gpt4 book ai didi

Java SimpleDateFormat 不给出恒定结果

转载 作者:行者123 更新时间:2023-12-01 16:47:06 24 4
gpt4 key购买 nike

我需要将 Java Date 对象格式化为字符串,如 yyyyMMdd(四舍五入到天)。例如,20180129。我有以下实现:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
sdf.format(roundedDate);

该代码大部分时间都有效,但有时会生成类似 2018129 的结果,这不是我想要的。因此,我的数据库中将同时包含 201801292018129

应用程序使用来自 MQ 的消息并将消息中的时间戳编码到 Java Date 对象中。它将日期格式化为上面的字符串。

问题是我无法在 Debug模式下重现该问题。它总是在调试器中产生预期的结果。但是当我在服务器(在 Docker 中)上运行它一段时间后,我看到了这样损坏的数据。

我想知道为什么在给定有效的 Date 对象的情况下 SimpleDateFormat 可能会出现这种未确定的行为?任何想法将不胜感激。

最佳答案

SimpleDateFormat 不是线程安全的,请参阅 this优秀的文章。

java.time.format.DateTimeFormatter 是核心 Java 中此功能的现代线程安全实现。

关于Java SimpleDateFormat 不给出恒定结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48555855/

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