【发布时间】:2009-02-28 21:11:54
【问题描述】:
你有什么方法可以在 Windows 中实现自定义时区吗?
我们在加拿大不列颠哥伦比亚省的克雷斯顿 (Time zone exception) 有一些 PC,它们全年都保持相同的时间。所以本质上,Creston 没有观察时区。我可以在 windowsÉ 中实现这种行为吗?
【问题讨论】:
-
如果你的意思是你不希望 Windows 为夏令时调整时钟,那应该是可配置的。
你有什么方法可以在 Windows 中实现自定义时区吗?
我们在加拿大不列颠哥伦比亚省的克雷斯顿 (Time zone exception) 有一些 PC,它们全年都保持相同的时间。所以本质上,Creston 没有观察时区。我可以在 windowsÉ 中实现这种行为吗?
【问题讨论】:
我写了一篇关于我们遇到的类似问题的长篇博文:http://subjectivecoder.blogspot.com.au/2013/04/creating-custom-windows-timezones.html
简短的版本是注册表中有一个位置允许您修改或创建新时区 - 但注册表格式相当讨厌。
Microsoft 有一个名为 TZEdit 的 GUI 工具,您可以在这里找到它:http://support.microsoft.com/kb/914387(向下滚动到方法 2 并下载 TZEdit.exe)。
如果您想查看幕后发生的事情,我已将源代码发布到我在此处构建的命令行工具:https://github.com/Rophuine/TimeZoneInfoGenerator(它未经测试且快速而肮脏,但可以帮助您了解正在发生的事情,如果你有兴趣)。
【讨论】:
除了夏令时,这是正常的 MST (UTC-0700),对吧?
Windows 曾经有一个复选框,名为“自动调整夏令时时钟”。也许你可以追捕它。即使没有复选框,注册表设置也可能仍然存在。
【讨论】:
数据位于:HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Time zone。
您可能可以添加自己的区域。
每个区域都有自己的密钥。它们包含大量数据。某些区域具有子项 Dynamic DST。
【讨论】:
这并不完全是一个答案,但您可以考虑尝试将 Creston 识别为官方时区。至于具体如何做到这一点......我想联系微软,并询问他们从哪里获得时区信息。在计算机编程中,与官方时区数据库最接近的可能是zoneinfo,但我不确定微软是否使用它。
【讨论】:
警告:您应该非常小心地创建自己的时区,即使您认为自己的系统是孤立的。
这可能会导致与其他系统交换信息时出现问题,包括转换错误和异常处理。
如果您想要的时区在法律上得到认可,您应该考虑让您的供应商正确地将您添加到他们使用的时区存储库中。
【讨论】: