Win7与CentOS双系统时间差8个小时问题

本文介绍了解决Windows 7与CentOS双系统时间相差8小时的问题。通过调整Date&Time设置中System clock uses UTC选项,可以轻松解决此问题。文章还解释了Windows与Linux在处理系统时间上的不同方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上个周安装Win7与CentOS双系统,发现两者时间永远差了8个小时,还会改也是无济于事难过,后来在网上找了不少帖子,说什么要调整时区,设置同步网络时间什么的,大多没有涉及根源,其实解决方法相当相当简单,如下两图:

1.打开Date&Time


2.去掉System clock uses UTC


中文的方法一样。

好了再来说说原因,下面摘抄了一段解释:

UTC即Universal Time Coordinated,协调世界时。

GMT 即Greenwich Mean Time,格林尼治平时。

Windows 与 Mac/Linux 缺省看待系统硬件时间的方式是不一样的。Windows把系统硬件时间当作本地时间(local time),即操作系统中显示的时间跟BIOS中显示的时间是一样的。Linux/Unix/Mac把硬件时间当作 UTC,操作系统中显示的时间是硬件时间经过换算得来的,比如说北京时间是GMT+8,则系统中显示时间是硬件时间+8。这样,当PC中同时有多系统共存时,就出现了问题。

假如你的linux设置的时区都为北京时间东八区,当前系统时间为9:00AM。则此时硬件中存储的实际是UTC 时间1:00AM。这时你重启进入Windows后,你会发现windows系统中显示的时间是 1:00AM,比linux中慢了八个小时。同理,你在Windows中更改或用网络同步了系统时间后,再到linux中去看,系统就会快了8小时。 在实行夏令时的地区,情况可能会更复杂些。


用户的测试机安装的win7,本人用的是 WEBLOGIC8.1 JDK1.4的。 测试时发现时间总是8小时,郁闷死。 立马想到时区不对,查看控制面板里时区设置(顺便BS一下win7,控制面板就不能学xp有个经典模式吗?郁闷死),发现时区设置正确,看来不是时区设置问题。 在win7下装JDK1.4JDK1.5、eclipse,输出系统时区时间。 果然,输出时区为"GMT",时间差8小时。那就说明是jdk1.5在win7下取不到正确的时区。 什么原因呢,为了验证我的假设,又下了最新的jdk1.6,后台打印输出正常。 问题找到了,接下来就要解决。为什么xp下能取到时区儿而win7下取不到呢? 搜索一下,到SUN论坛,发现SUN提到了这个bug,(http://java.sun.com/javase/tzupdater_README.html)而且发布了一个tzupdater。 按照使用说明下载、运行,再试,还是不行。 虽然用updater没有成功,但通过他的使用说明还是发现了一些东东。在/jdk1.5.0_04/jre/lib目录下有个tzmappings文件。 用记事本打开,里面记录了所有地区的时区,格式为“China Standard Time:-1,75::Asia/Shanghai:”,看到它,很自然的联想到注册表。 于是,打开注册表时区的节点[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Time Zones/China Standard Time]。 有一个键值似曾相识,“MapID=-1,75”,这不就是tzmappings文件中记录的那个值吗。 会不会Java是通过这个键值获取的时区?展开win7下注册表相同的节点,我靠,里面竟然没有MapID键, xp对比了一下,少了MapID、Index键,多了MUI_Display、MUI_Dlt、MUI_Std啥的, 其他的不管,先把MapID键加上再说。加上后,再运行我那个取系统时间的测试程序,OK!问题解决! 本同目录下有两个注册表。一个是中国的 。一个是时区全的。那个都行。 其实本人也是参考优快云部分帖子,再有疑问联系,优快云:lawsystem 感谢 优快云 无名贡献者。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值