Linux和Windows中时间的不同

最近在自己电脑上安装了一个archlinux组了双系统,切换回win以后发现科学上网不行了,排查了一圈发现是时间不对了(用v2ray科学上网必须保证时间和服务器时间误差在一分钟之内)。我就纳闷了,两边设置的时间和时区都是一样的,为什么切换系统时间会变?

查找了资料后发现Linux会将CMOS中的时间看作UTC时间,而Windows则会将其看作本地时间,这就导致了问题。archlinux wiki提供了一行命令,通过修改注册表,让windows将CMOS时间看作UTC时间:

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

另外发现一个有趣的事情,CMOS记录的时间竟然是按照“年月日时分秒”,这种格式记录的(参考文章),我一直以为java中的System.currentTimeMillis()是从CMOS时间换算过来的,但是CMOS时间最小单位竟然是秒。而从“从UTC1970年1月1日0时0分0秒起至现在的秒数”是叫UNIX时间,但是这种时间最小单位也是秒。

发表评论

电子邮件地址不会被公开。 必填项已用*标注