在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时间,还结合系统的时区统一计算。