一尘不染

java.util.Date是否使用时区?

java

我有两台不同的电脑,每台都有不同的时区。

在一台计算机上,im printing System.currentTimeMillis(),然后在两台计算机上打印以下命令:System.out.println(new Date(123456));–>123456表示计算机1中currentTimeMillis中的数字。

第二次打印(尽管打印了硬编码)会在两台计算机上产生不同的打印结果。为什么?


阅读 435

收藏
2020-03-20

共1个答案

一尘不染

java.util.Date与时区无关。在javadoc中这么说。

你想要一个特定时区的东西吗?这是java.util.Calendar。

棘手的部分?当您打印这些内容(使用java.text.DateFormat或子类)时,它包含一个日历(包含一个时区)。请参见DateFormat.setTimeZone()。

它看起来确实(没有检查实现)像java.util.Date.toString()通过了日期格式。所以即使是我们的(大部分)时区独立类也会被时区搞得一团糟。

想把时区的东西从我们纯粹的无分区约会对象中拿出来吗?有日期。toGMTString()。或者可以创建自己的SimpleDateFormatter并使用setTimeZone()来控制自己使用的区域。

2020-03-20