我有 2 台不同的计算机,每台都有不同的时区。
在一台计算机上打印 System.currentTimeMillis()
,然后在两台计算机上打印以下命令:
System.out.println(new Date(123456));
--> 123456 代表计算机 #1 中 currentTimeMillis
中的数字。
第二次打印(尽管是硬编码的)导致两台计算机上的打印不同。 这是为什么呢?
最佳答案
一些迂腐的细节怎么样。
java.util.Date与时区无关。在 javadoc 中这么说。
您想要与特定时区相关的东西吗?那是 java.util.Calendar .
棘手的部分?当您打印这些东西(使用 java.text.DateFormat 或 subclass )时,会涉及到日历(涉及时区)。见 DateFormat.setTimeZone() .
确实看起来(尚未检查实现)像 java.util.Date.toString() 一样通过 DateFormat。因此,即使是我们(大部分)独立于时区的类也会因时区而变得困惑。
想要从我们的纯无时区 Date 对象中获取时区信息吗?有Date.toGMTString() .或者您可以创建自己的 SimpleDateFormatter 并使用 setTimeZone() 来控制自己使用哪个区域。
关于java - java.util.Date 是否使用 TimeZone?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1516213/