LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1604|回复: 4

重启系统后时间快了8小时

[复制链接]
发表于 2011-6-22 01:48:34 | 显示全部楼层 |阅读模式
/etc/localtime -> .../Asia/Taipei

hwclock 的时间是正确的,

ntpdate time.cn99.com校准了时间或 hwclock --hctosys后,只要重启了电脑,时间就快了8小时,是哪里要修改呢?
发表于 2011-6-22 08:51:18 | 显示全部楼层
hctosys --> systohc
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-6-27 19:18:30 | 显示全部楼层
/etc/hardclock 将
localtime 改为 UTC,

重启解决。
回复 支持 反对

使用道具 举报

发表于 2011-6-28 08:58:27 | 显示全部楼层
最好理解 localtime 和 UTC 的关系,两个设置都是正确的。
操作系统显示时间有两种方式,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,或者对其中一个系统声明一个错位的时区,人为的添加一个纠偏量。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-6-29 01:14:00 | 显示全部楼层
透彻。
多系统环境有时真的比较繁。
正逐步迁移到 linux/BSD 系统来。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表