JVM默认时区设置已更改
这是一个猜测,但完全一致。带有时区缩写(EST或EDT)的日期和时间很可能使用JVM的默认时区。因此,您的生产WebLogic服务器中的默认时区设置已更改。服务器中运行的任何程序都可以做到这一点。如果有,即使在同一JVM中在WebLogic外部运行的程序也可以。随时。
默认时区是在启动时通过系统属性user.timezone设置的(或者我不确定JVM中的程序第一次使用时区执行任何操作)。稍后更改JVM的默认时区 not 不会在系统属性上恢复工作。进行简短演示:
System.setProperty("user.timezone","America/New_York");
TimeZone.setDefault(TimeZone.getTimeZone("America/Atikokan"));
System.out.println("TimeZone.getDefault(): " + TimeZone.getDefault().getID());
System.out.println("user.timezone: " + System.getProperty("user.timezone"));
System.out.println("Example java.util.Date: " + new Date());
在我的计算机上运行此代码段提供了以下输出:
TimeZone.getDefault(): America/Atikokan
user.timezone: America/New_York
Example java.util.Date: Thu Mar 19 14:18:03 EST 2020
您注意到user.timezone
打印为America/New_York
,但最后一行提到EST
,因此与America/New_York
不同,后者暗示{{1} },如果我没记错的话。
PS通常,我会完全不鼓励使用EDT
类,因为它的设计很差并且已经过时了。在本演示中,我需要它,因为现代Java日期和时间API java.time没有提供更改JVM时区设置的选项(据我所知)。也许他们通过不包含它来做出明智的选择,因为-如您所见-这样做很容易引起混乱。
本文链接:https://www.f2er.com/2617458.html