gpt4 book ai didi

java - SimpleDateFormat 在部署一段时间后给出错误的日期和时间

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

我的代码中有 2 个文件:

文件 1 内容:

public static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
public static final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

文件 2 内容:

sdf.format(formatter.parse("2015-02-02")));

问题:文件 2 上面的行最初打印“2015-02-02 12:00:00”几个小时,但之后打印“2015-02-01 06:00:00”。知道这里可能是什么问题。

附加信息:我的服务器在位于美国的某台云计算机上运行。new java.util.Date( ) 始终正确提供 UTC 时区值。使用命令 java -jar xyz.jar 启动服务器。还有其他文件正在使用 sdfformatter 变量。我无法在本地机器上重现这个。一旦问题开始在服务器上发生,它就会显示错误的日期时间,直到服务器重新启动。

最佳答案

如果你查看 Oracle 官方文档,它是这样说的

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 - SimpleDateFormat 在部署一段时间后给出错误的日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54585842/

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