C# 英国夏令时 (BST) 时区缩写



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

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

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

有什么方法可以从"GMT夏令时"或任何其他可用的Windows时区信息访问BST?

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

多年前在BCL博客上关注TimeZoneInfo类的发展时,我没有看到他们如何为DaylightName选择值的解释。如果我猜的话,那是因为这是针对"时区"而不是特定城市。

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新