我有两台不同的电脑,每台都有不同的时区。
在一台计算机上,im printing System.currentTimeMillis(),然后在两台计算机上打印以下命令:System.out.println(new Date(123456));–>123456表示计算机1中currentTimeMillis中的数字。
im printing System.currentTimeMillis()
System.out.println(new Date(123456));
currentTimeMillis
第二次打印(尽管打印了硬编码)会在两台计算机上产生不同的打印结果。为什么?
java.util.Date与时区无关。在javadoc中这么说。
你想要一个特定时区的东西吗?这是java.util.Calendar。
棘手的部分?当您打印这些内容(使用java.text.DateFormat或子类)时,它包含一个日历(包含一个时区)。请参见DateFormat.setTimeZone()。
它看起来确实(没有检查实现)像java.util.Date.toString()通过了日期格式。所以即使是我们的(大部分)时区独立类也会被时区搞得一团糟。
想把时区的东西从我们纯粹的无分区约会对象中拿出来吗?有日期。toGMTString()。或者可以创建自己的SimpleDateFormatter并使用setTimeZone()来控制自己使用的区域。