时区 'UTC' 是否在每个 windows 系统上可用?

Is the Time Zone 'UTC' available on every windows system?

我从事一个需要存储用户时区信息的大型项目。我们通过将 System.TimeZone 对象的 'Id' 作为字符串(是的,id 确实是一个字符串..)保存到数据库来实现。

此外,还有一个基本种子脚本,可将管理员用户添加到数据库,以提供第一个用户进行设置。

现在我的问题是,我将该脚本中的时区 ID 设置为 欧洲中部标准时间,但在客户服务器上似乎不可用。

UTC 存储为管理员的时区是个好主意吗?时区信息 'UTC' 在 windows 系统上是否始终可用? (比如 Windows Server 2012 R2)

几件事:

  • 我认为你的意思是 System.TimeZoneInfo class,因为 System.TimeZone class 没有 Id 属性.没关系,因为无论如何您都应该考虑 System.TimeZone 已弃用。

  • TimeZoneInfo class 公开的时区是标准的 Windows 操作系统时区,可在注册表中的以下项下找到:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
    
  • 是的,"UTC" 时区在每个 Windows 系统上都可用,"Central European Standard Time" 时区也应该如此。如果它们在客户的 Windows 计算机上不可用,则他们的 Windows 注册表已被手动操作或已损坏。它可以通过从另一台计算机备份上面显示的注册表项并将其复制到位来恢复,或者只需安装列出的最新更新 here。 (2016 年 6 月更新,截至撰写本文时。)

  • 存储时区的Id就完全没问题了。是的,它是一个字符串。这就是时区标识符的工作原理。您应该阅读 the time zone tag wiki 以便更好地理解。

  • 没人能回答您的管理员应该使用哪个时区。这完全特定于您的应用程序。也许世界不同地区可能有多个管理员,或者管理员可能需要使用其他时区在上下文中查看某些数据。这里没有一种正确的方法。您或许可以通过阅读 Daylight saving time and time zone best practices.

  • 获得一些想法
  • 时区问题可能很棘手,Whosebug 上有很多很好的问题,您应该在进一步研究之前研究一下。您可能还想阅读维基百科上关于一般时区或特定位置时区的许多文章,或者寻找培训材料,例如 Pluralsight 上的视频。