我们目前使用TimeZone.setDefault设置线程的默认时区。 我知道使用Java 8调用此方法会设置JVM的默认时区。
有没有人有关于如何在Java 8中为线程设置默认时区而不必重做大量代码的建议?
谢谢,
肯
答案 0 :(得分:3)
根本不使用系统默认值。使用ThreadLocal<T>
:ThreadLocal<TimeZone>
或更好,ThreadLocal<ZoneId>
和java.time
类。然后你可以从那里到处获取你需要的默认值。
就我个人而言,我试图避免使用本地线程,并明确地传递上下文 - 或者如果做想要隐式地拥有上下文,则封装所有上下文(例如, Web请求)在适当的上下文类型中,而不是为时区,语言环境等提供单独的线程本地。