Java中的Date和时区转换问题

(1)、Date中保存的是什么

Date对象里存的只是一个long型的变量,其值为自1970年1月1日0点至Date对象所记录时刻经过的毫秒数。调用Date对象getTime()方法就可以返回这个毫秒数。

不同的时区,执行下面的语句 Date date = new Date();  new出的date对象里存的毫秒数是相同的

确切的说,Date对象里存的是自格林威治时间( GMT)1970年1月1日0点至Date对象所表示时刻所经过的毫秒数。所以,如果某一时刻遍布于世界各地的程序员同时执行new Date语句,这些Date对象所存的毫秒数是完全一样的。也就是说,Date里存放的毫秒数是与时区无关的。

(2)、执行打印 System.out.println(date); 时区不同会打印出不同的时间

这是因为Sysytem.out.println函数在打印时间时,会取操作系统当前所设置的时区,然后根据这个时区将同毫秒数解释成该时区的时间。 当然我们也可以手动设置时区,以将同一个Date对象按不同的时区输出。 

 

转载原文:

https://blog.csdn.net/halfclear/article/details/77573956