(1)、Date中保存的是什么
Date对象里存的只是一个long型的变量,其值为自1970年1月1日0点至Date对象所记录时刻经过的毫秒数。调用Date对象getTime()方法就可以返回这个毫秒数。
(2)、时区
全球分为24个时区,相邻时区时间相差1个小时。比如北京处于东八时区,东京处于东九时区,北京时间比东京时间晚1个小时。
(3)、不同与相同
不同的时区,执行下面的语句 Date date = new Date(); new出的date对象里存的毫秒数是相同的。
确切的说,Date对象里存的是自格林威治时间( GMT)1970年1月1日0点至Date对象所表示时刻所经过的毫秒数。所以,如果某一时刻遍布于世界各地的程序员同时执行new Date语句,这些Date对象所存的毫秒数是完全一样的。也就是说,Date里存放的毫秒数是与时区无关的。
执行打印时 System.out.println(date); 时区不同会打印出不同的时间,北京的程序员将会打印出2017年8月24日11:17:10,而东京的程序员会打印出2017年8月24日12:17:10
这是因为Sysytem.out.println函数在打印时间时,会取操作系统当前所设置的时区,然后根据这个时区将同毫秒数解释成该时区的时间。 当然我们也可以手动设置时区,以将同一个Date对象按不同的时区输出。
详细的可以参考下这篇博客:https://blog.youkuaiyun.com/halfclear/article/details/77573956
感谢!