前言
此前的文章讲述了下Linux系统下RTC的使用,见《RTC没有时区--Linux》,今天将讲述下RTC跟Windows的下的关系。
首先阐明两个概念:
Windows和Linux对RTC和时区的关系理解不一样,Linux将RTC默认为UTC(但Linux可以修改这种默认的看法或者视角),而Windows将RTC默认为localtime。
Windows这么做的原因是为了兼容早期的版本,也为了照顾用户,防止用户问为什么RTC和实际OS时间不一致。
Windows Time&XCC Time
将Windows对RTC的视角修改为UTC
修改方法
修改方式:注册表定位“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation”>>添加“RealTimeIsUniversal”数值名称,新建一个,类型视操作系统位数而定:如果是64位,则类型为“QWORD”,如果是32位,类型为“DWORD”>>编辑“RealTimeIsUniversal”数值名称,将其值改成1>>重启机器。
Windows Time

注:当前Windows已经修改为对RTC的视角为UTC,当前Window的时区(北京时区,即UTC+8),因此RTC的时间戳为:09:13.
XCC-local

注:XCC下的XCC-LOCAL方式的意思是,XCC认为从RTC获取的时间戳已经应用适用时区和DST偏移量的本地时间,因此在XCC-local下,
XCC显示的时间跟RTC的时间戳将相等。
XCC-UTC-0

注:UTC(例如: Linux) : 此模式下, XClarity Controller 认为从实时时钟获取的时间和日期为未应用时区和 DST 偏移量的协调世界时。 此模式下, 通过从下拉菜单中选择所在区域的时区偏移量, 可选择将时间和日期调整为本地区域的时间和日期。 如果所在位置采用夏令时, 也可勾选针对夏令时( DST) 自动调整复选框。
同时将XCC应用为UTC-0,偏移量为0, 也会保持XCC跟RTC的时间戳相同。
XCC-UTC-8

注:RTC的时间是09:13,我们将它视为了UTC-0,现在设置XCC的时区为UTC+8,因此XCC的时间将比RTC的视角戳+8.
将Windows对RTC的视角修改为默认local time
Windows Time

注:将Windows 对RTC的视角修改为默认local time后,windows当前的时间是18:19,因此XCC的时间戳也为18:19.
XCC-Local

注:XCC-local,默认RTC的时钟相较于当前的时区已经进行了偏移量的调整,因此此时XCC的时间为18:19.
XCC-UTC-0

注:XCC-UTC,这时XCC对RTC的视角就是认为XCC就是UTC-0,而此时设置XCC的时区为UTC-0,因此偏移量为0,XCC的时间跟RTC时间是相同的。
XCC-UTC-8

注:XCC-UTC,这时XCC对RTC的视角就是认为XCC就是UTC-0,而此时设置XCC的时区为UTC-8,因此偏移量为8,XCC的时间较于RTC的时间要+8.
总结
1、默认Windows将RTC视为localtime,但Windows可以通过修改注册表将OS对RTC的视角修改为UTC。
2、XCC对RTC有两种视角,localtime/UTC,根据实际情况进行使用。
3、最后强调一遍,RTC没有时区,所谓的时区来源于OS的视角,你认为RTC是什么Local也好UTC也好,都是你认为的。
RTC只会回应一句:我就是我,我没有时区,你认为我在哪个时区或者我应该在哪个时区那你就怎么用就好了。