【问题标题】:C# british summer time (BST) timezone abbreviationC# 英国夏令时 (BST) 时区缩写
【发布时间】:2012-04-24 22:58:13
【问题描述】:

我需要显示一个带有当前时区缩写的标签。我电脑的时区当前设置为“(格林威治标准时间)格林威治标准时间:都柏林、爱丁堡、里斯本、伦敦”。因此,我希望看到 BST 显示,因为 LN 目前处于英国夏令时。

该信息(时区缩写)似乎不可用。查看 GMT TimeZoneInfo,关于名称我能看到的只有

Id  "GMT Standard Time"
StandardName    "GMT Standard Time"
DaylightName    "GMT Daylight Time"

有什么方法可以从“GMT Daylight Time”或任何其他可用的 Windows 时区信息到达 BST?

【问题讨论】:

    标签: c# .net timezone


    【解决方案1】:

    您应该知道,所有标有“标准”的时区都会在夏季正确切换到夏令时。例如TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time") 将是一个可以正确处理标准时间和日光时间的对象。例如,"Pacific Standard Time" 也是如此。

    【讨论】:

      【解决方案2】:

      TimeZoneInfo 类将“英国夏令时间”称为“GMT 夏令时间”,所以不,这是不可能的。如果 Microsoft 将其存储为“BST”,它将位于 DaylightName 属性中。

      虽然多年前在 BCL 博客上开发了 TimeZoneInfo 类,但我没有看到他们如何为 DaylightName 选择值的原因。如果我猜是因为这是针对“时区”而不是特定城市。

      看来,被认为比 Microsoft 的时区数据库更完整的公共域 tzdatabase 确实显示了伦敦的 BST (source)。这是因为城市包含在这个数据集中,而不仅仅是时区。 有一个名为 Noda Time 的项目将 tzdatabase 带到现在可用的 .Net。

      【讨论】:

      • 用指向 Noda Time Beta nuGet 包的链接更新了答案。
      【解决方案3】:

      我认为您有两个选择:GMT 时区的特殊情况处理,或“Microsoft 使用错误名称的时区”的通用处理。

      例如,我想知道葡萄牙人是否在冬季使用“GMT”作为他们的时区。不管他们是否这样做,我怀疑他们在夏天使用“英国夏令时”!

      【讨论】:

        猜你喜欢
        • 2014-05-12
        • 2020-09-16
        • 2019-09-29
        • 1970-01-01
        • 2012-09-12
        • 2018-07-06
        • 2015-04-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多