首页 文章

C#british summer time(BST)timezone的缩写

提问于
浏览
16

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

看起来这个信息(时区缩写)不可用 . 看看GMT TimeZoneInfo,关于名字我只能看到

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

有没有办法从“GMT日光时间”或任何其他可用的Windows时区信息到达BST?

3 回答

  • 1

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

  • 2

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

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

  • 15

    TimeZoneInfo 类引用"British Summer Time"为"GMT Daylight Time",所以不可能 . 如果Microsoft将其存储为"BST",则它将位于 DaylightName 属性中 .

    虽然多年前在BCL博客上开发了 TimeZoneInfo 课程,但我没有看到他们如何选择 DaylightName 的值的解释 . 如果我猜测那将是因为这是一个"Time Zone"而不是一个特定的城市 .

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

相关问题