17

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

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

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

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

4

3 回答 3

16

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

TimeZoneInfo多年前在 BCL 博客上跟踪课程的开发时,我没有看到他们如何选择DaylightName. 如果我猜测那将是因为这是针对“时区”而不是特定城市。

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

于 2012-04-12T15:04:27.673 回答
4

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

于 2016-03-13T23:59:45.390 回答
2

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

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

于 2012-04-12T15:12:21.770 回答