在Linux系统下有2个关于时间的文件
/etc/timezon
这个timezone
代表的是时区
/etc/localtime
这个localtime
代表的是本地时间
按照严格时间概念来说,Linux中时间是通过这2者一起决定的,我们来举个例子。
假如设置Linux的timezone
为UTC
,设置的localtime
为北京时间
,在Java
应用中,new Date()
创建出来的时间还是UTC
时间。如果希望new出来的时间就是localtime
设置的,那么需要设置时区为Asia/Shanghai
。
上面这句话请好好琢磨
额外提提Window和Linux中时间的不同定义:
Win
下当前时间
默认是来自于硬件时间
,硬件时间
也就是我们在BIOS
中看到的时间。Linux
下当前时间
出来来自硬件时间
而外还结合了时区
我们装Win和Linux双系统的时候,经常会遇到进入不同系统,时间不一致的问题,来源就是这里。
通常会在Win的注册列表中添加一个值: RealTimeIsUniversal,具体可以参考双系统时间差8个小时的处理办法
Win很简单暴力,把硬件时间当做当前时区
的时间,才不管时区什么的。
Linux很智能,把硬件时间作为UTC时间,还结合系统的时区统一计算。