我需要显示一个带有当前时区缩写的标签 . 我的电脑的时区目前设定为“(GMT)格林威治标准时间:都柏林,爱丁堡,里斯本,伦敦” . 因此,我希望看到BST显示,因为LN目前正处于英国夏季 .
看起来这个信息(时区缩写)不可用 . 看看GMT TimeZoneInfo,关于名字我只能看到
Id "GMT Standard Time"
StandardName "GMT Standard Time"
DaylightName "GMT Daylight Time"
有没有办法从“GMT日光时间”或任何其他可用的Windows时区信息到达BST?
3 回答
您应该知道所有说"Standard"的时区将在夏天正确切换到白天时间 . 例如,
TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time")
将是一个可以正确处理标准时间和日光时间的对象 . 例如,"Pacific Standard Time"
也是如此 .我认为您有两种选择:GMT时区的特殊情况处理,或“Microsoft使用错误名称的时区”的通用处理 .
我想知道,例如,葡萄牙人是否在冬季使用“GMT”作为他们的时区 . 无论他们是否这样做,我怀疑他们在夏天使用“英国夏令时”!
TimeZoneInfo
类引用"British Summer Time"为"GMT Daylight Time",所以不可能 . 如果Microsoft将其存储为"BST",则它将位于DaylightName
属性中 .虽然多年前在BCL博客上开发了
TimeZoneInfo
课程,但我没有看到他们如何选择DaylightName
的值的解释 . 如果我猜测那将是因为这是一个"Time Zone"而不是一个特定的城市 .看起来公共域tzdatabase被认为比微软的时区数据库更完整,它确实显示了伦敦的BST(source) . 这是因为城市包含在此数据集中,而不仅仅是时区 . 有一个名为Noda Time的项目,它将tzdatabase带到现在可用的.Net .