Windows和Linux Mint中的时间不同


18

我先在Acer Aspire 4930上安装了Linux Mint,然后与Windows 7双重启动。

我总是在Linux Mint上看到正确的时间,但是在启动Windows时,即使重新设置时间,该时间也要向后移几个小时,而在重新启动时,它又显示了错误的时间。


问题:

  1. 为什么会这样呢?

  2. 我该怎么办?

Answers:


17

在Windows上,传统上将系统RTC时钟保存在本地时间。在Unix和Linux中,传统上将其保留在UTC中,并/etc/localtime用于指示当前时区,以便显示的时间正确。

因为只有一个RTC,所以这两种世界观在双引导配置中发生冲突。通常,您告诉Linux假定RTC是本地时间(因为无法告知Windows)。这在一个Linux到另一个Linux上有所不同,但是由于Mint就像Ubuntu,您可以UTC=no在中设置/etc/default/rcS。然后,您可以在Windows中将时钟设置为本地时间,Linux在此之后将不再设置该时间。


编者注

自Linux Mint 19起(或更确切地说,自Ubuntu 18.04版本起),该文件不存在:

/etc/default/rcS

2
UTC已设置为no,时差仍然存在。
Ballistic

5

Mint 18.2 KDE似乎不受其他修复程序(包括我在搜索中找到的其他修复程序)的影响。至少在当前的KDE版本中,aecolleyerror404答案中提到的文件不再存在或似乎不再是引用该设置的位置。朱莉·佩莱捷(Julie Pelletier)的答案中的命令适用于18.2肉桂,但不适用于18.2 KDE。

在尝试了六种建议的解决方案之后,以下内容将其修复为18.2 KDE。在显示正确的时间的情况下,运行以下终端命令:

timedatectl set-local-rtc 1 --adjust-system-clock

来源:安装后Linux Mint的技巧和窍门[Mint 18-Cinnamon Edition]

这对于肉桂作为替代解决方案也应该起作用,并且我假设其他DE也是如此。

编者注:

  • 有没有sudo需要,运行该命令的用户。

  • 它确实在重启后仍然存在,应该是永久的。

  • 在基于Ubuntu 18.04的Linux Mint 19.1 Cinnamon上进行了测试。


我确认,它可以在薄荷18.3肉桂上使用。
dchrome

@Vlastimil,距离我这样做已经有一段时间了。我的记忆是sudo不是必需的(如果是的话,我会在答案中包含它,并且类似的修复程序也不会引用sudo,所以我敢肯定它不是)。是的,这仍然存在。
fixer1234

@ fixer1234非常感谢,队友!您保存了我的一天,我想每个人都:)
LinuxSecurityFreak

3

最通用的方法是:

hwclock --systohc --localtime

在重新启动后保持不变,并且可以在大多数系统上使用。


如果您的时钟当前显示正确的时间,那么您所需的命令确实是hwclock --systohc --localtime,它将使用系统当前显示的值将硬件时钟设置为本地时间。但是,如果您的时钟当前不正确(例如,硬件时钟是本地时间,但是系统为您的时区添加了偏移量,则导致显示的值不正确),则需要hwclock --hctosys --localtime
youen

@youen,我遇到了这种情况,而您所做的修改却使时间花在了另一个方向。对我来说,解决方法是将时钟重置为正确的时间,然后在朱莉的答案中使用命令。
fixer1234

@ fixer1234好吧,很奇怪。老实说,我没有在注释中尝试第二个命令,因为那时我已经确定了时钟。我相信,但是运行这些命令中的任何一个,然后将时钟设置为正确的显示时间,都可以解决问题(如果您已经执行了第二个命令,则可能不必再次运行第一个命令)。很高兴最终为您服务:)
youen

1

警告

这种方法在Windows 7之前的版本中是有问题的,但是它解决了Windows等式的问题,而不是Linux方面的问题:您不必将Linux设置为使用localtime


摘自最光荣和最受尊敬的Arch Linux Wiki

用户经常在本地时间设置RTC的原因之一是与Windows(使用本地时间)进行双重引导。

但是,Windows [可以通过简单的注册表修复来处理RTC为UTC]。建议将Windows配置为使用UTC,而不是将Linux配置为使用本地时间。

使用regedit,将DWORD具有十六进制值的值添加1到注册表:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal

您可以通过运行以下命令的管理员命令提示符来执行此操作:

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

或者,使用以下内容创建一个* .reg文件(在桌面上),然后双击它以将其导入注册表:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
     "RealTimeIsUniversal"=dword:00000001

如果以上内容似乎无效,并且使用的是Windows的64位变体,则使用 QWORD值代替DWORD值可以解决此问题。

如果由于DST更改Windows要求更新时钟,请让它。它将按预期时间以UTC保留时钟,仅更正显示的时间。

设置此值后,可能需要更新硬件时钟和系统时钟时间。如果您在时间偏移方面遇到问题,请尝试重新安装tzdata,然后再次设置时区:

# timedatectl set-timezone America/Los_Angeles

实际上,我在自己的Windows机器上一直遇到这个问题,但是到目前为止,我只是忽略了它。但是,我将查看此方法是否有效并报告我的发现。
Alexej Magura

1
这个对我有用。非常感谢!这样,我不必修改PC上的每个Linux安装。
Lokesh

0

修改(如根)/etc/timeadj从变量UTCLOCAL

这样就可以解决问题,而不必在Windows方面摆弄regedit。


0

运行与您当地时间匹配的这两个命令之一

timedatectl set-local-rtc 1 --adjust-system-clock

'要么'

timedatectl set-local-rtc 0 --adjust-system-clock
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.