|
发表于 2011-3-27 19:50:03
|
显示全部楼层
操作系统显示时间有两种方式,UTC 和 localtime。
当设置为 UTC 模式时,系统从 bios 中读出时间,把这个时间作为协调世界时的原点,可以简单的理解为类似于格林威治标准时间,实际有更复杂的换算关系。当拿到这个时间后,系统再读取用户配置的当前时区,比如北京时间是东八区,也就是 UTC +8,然后把从 bios 中读到的时间加上八个小时显示出来。
当设置为 localtime 模式时,系统从 bios 中读出时间,直接作为当前时间显示出来,同时用户设置的当前时区也作为参考。
当电脑跨越时区使用时,设置为 UTC 的系统修改当前时区,比如从 UTC +8 变为 UTC +7,此时 bios 中记录的时间是不变的,因为这是一个与时区无关的 UTC +0 原点,仅仅是当前时区变动,系统用 bios 时间加上 7 个小时刷新显示;设置为 localtime 的系统跨时区使用时,修改当前时区 UTC +8 变为 UTC +7,系统会立刻将当前时间减去 1 小时存入 bios。
这两种表示方法其实都是先设定一个原点,然后由用户声明偏移量,所不同的是,到底将当前时区时间作为原点还是一个时区无关的标准时作为原点。
作为个人电脑使用,两者是等价的,没有什么差别,作为服务器使用时,因为全世界的服务器虽然在地理上分布于各地,但从网络结构上是平等的,使用 UTC 更能体现这个关系。
当在启用了 UTC 的 linux 中设定好时间,比如中午 12 时,那么 bios 中存储的应该是 UTC +0 也就是 早上 4 时,当这个系统重启进入没有启用 UTC 的 windows 中时,直接从 bios 中读出 4 时作为当前时间,这样就慢了 8 个小时。
解决方法是两个系统都同时用 UTC 或者 localtime,或者对其中一个系统声明一个错位的时区,人为的添加一个纠偏量。
据说是这个文件
/etc/sysconfig/clock
UTC=false |
|