通常情况是Linux系统将RTC(实时时钟)设置为UTC,并且根据时区数据和TZ
环境变量在用户空间中完成到本地时间的转换。之所以这样,是因为它可以使系统RTC单调增加,并在以后应用任何时区魔术,例如,确保将来通常没有文件带有时间戳(如果很容易每年至少发生一次),则可以说是“不错”。系统RTC设置为本地时间)。正如Ken所指出的那样,RTC本身没有时区的概念,只有时间。
正如您所发现的,这在使用通常无法以这种方式运行的系统进行双重引导时会引起问题,例如Microsoft系列操作系统通常期望将RTC设置为本地时间。是的,Windows NT(我想一直回到NT 4,实际上)可以将RTC设置为UTC,但至少最后我认为它不是真正受支持的配置,并且有很多警告。
在您的情况下,一种简单的解决方案可能是将RTC设置为本地时间,告诉您的Linux系统RTC设置为本地时间(执行此操作的确切机制因发行版和发行版而异,但显然在Ubuntu中,您UTC=no
在/中设置了etc / default / rcS),然后配置操作系统,使其仅其中之一(最好是您使用最多的操作系统,因为在所有其他操作系统中显示的时间每年都会两次不正确,直到启动并有机会进行更正)可以处理夏令时更改。缺点是,在单用户系统上应该可以管理这些缺点。
您还可以将Windows端设置为将UTC用作时区,并关闭Windows中的自动夏令时更改,并使Linux设置为将RTC设置为UTC并根据其惯例显示时间。但是,这将导致Windows以UTC显示日期和时间,而这可能并不是您真正想要的。对于我们欧洲人来说,这不是什么大问题,因为他们距离UTC最多只有三个小时的路程,但在美国可能更成问题。如果您偶尔仅使用Windows,并且您的主要操作系统是Linux或其他支持RTC-UTC的操作系统,那么这可能是更现实的选择。