gpt4 book ai didi

java - System.setProperty ("user.timezone"和 "America/Chicago"之间的区别;和 TimeZone.setDefault(TimeZone.getTimeZone ("America/Chicago"));

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:26:26 29 4
gpt4 key购买 nike

  1. System.setProperty("user.timezone", "America/Chicago");
  2. TimeZone.setDefault(TimeZone.getTimeZone("美国/芝加哥"));

两者有什么区别?哪个更好/推荐设置时区?

最佳答案

查看代码,主要区别在于何时设置 TimeZone 默认值 -

在第一种情况下,默认值在第一次调用 TimeZone 类时生效(本质上是懒惰的)——比如说 TimeZone.getDefault() ,此时 TimeZone.setDefault 被调用,查找 user.timezone 并设置默认值。

在第二种情况下,默认设置是急切的 - 当您显式调用 TimeZone.setDefault

我认为这是唯一的区别,两者在实践中都应该可以正常工作。

更新这是来自 java.util.TimeZone 类的代码

对 TimeZone.getDefault() 的第一次调用有这个流程,它涵盖了您的第一点。

TimeZone.getDefault()
-> TimeZone.setDefaultZone() (lookup "user.timezone" , set class variable and return timezone)
-> return defaulttimezone

下次调用 getDefault() 时,它只返回类变量

在 TimeZone.setDefault(timeZone) 的情况下,正在设置类级变量 defaultTimeZone:defaultTimeZone = zone; 并返回。

关于java - System.setProperty ("user.timezone"和 "America/Chicago"之间的区别;和 TimeZone.setDefault(TimeZone.getTimeZone ("America/Chicago"));,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11907119/

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