C# 英国夏令时 (BST) 时区缩写
Posted
技术标签:
【中文标题】C# 英国夏令时 (BST) 时区缩写【英文标题】:C# british summer time (BST) timezone abbreviation 【发布时间】: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?
【问题讨论】:
【参考方案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”作为他们的时区。不管他们是否这样做,我怀疑他们在夏天使用“英国夏令时”!
【讨论】:
以上是关于C# 英国夏令时 (BST) 时区缩写的主要内容,如果未能解决你的问题,请参考以下文章