今天因为一些原因换上了备用的一块硬盘,运行了一下Windows,晚上再开Linux时,发现系统时间变了,整整比原来晚了8个小时,很明显是时区的问题。
简单查了一下,没想到在时间的问题上Windows和Linux竟然有着截然不同的做法。
对于Linux来说,系统里有两个时钟:硬件时钟和系统时钟。硬件时钟是计算机主板所维护的时钟,而系统时钟则是Linux内核所维护的时钟,Linux系统启动时从硬件读取时间,然后二者就分道扬镳了。
通常硬件时钟设置为UTC时间(Coordinated Universal Time),数值上与GMT(Greenwich Mean Time)相等,Linux系统以硬件时钟的时间为基础,根据事先设置的时区,生成相应的系统时间。之后任何对系统时间做的改动都不会影响到硬件时钟。
而对于Windows来说,事情被「简化」了,系统时钟即硬件时钟,硬件时钟的时间也就是localtime,任何对系统时间做的改动都会写入硬件时钟。
这样就很好理解发生在我的电脑上的现象了,当我使用Windows时,Windows系统将我原本设置为UTC的硬件时钟时间作为当前的localtime并进行了NTP同步,也就是调快了8个小时(东八区),并写入了硬件时钟。
当我再次启动Linux时,Linux却将此时间当作UTC时间,在此基础上又调快了8个小时,这就造成显示的时间比实际时间快了8个小时的错误。
12 comments
挺差异的,你竟然用了这么久才发现……
好久没有换回Windows了...
这样……
挺诧异的,你竟然用了这么久才发现……
于是可以在linux上换个时区么?我在suse下遇到过这个问题,然后改了硬件上的时间,开win又不对了。。。
解决办法是让windows也使用UTC,需要改一下注册表,你Google一下吧~
好的呢~
看~耶耶耶
喵的。。。。
啊哈!用ie6居然读不出我的信息了,耶耶耶/
明明是IE8!
同样遇到这个问题,每次都是手动调。。
Leave a Comment