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

时间:2012-04-12 14:59:52

标签: c# .net timezone

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

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

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

有没有办法从格林威治标准时间日光时间"到达BST。或任何其他可用的Windows时区信息?

3 个答案:

答案 0 :(得分:16)

TimeZoneInfo课程将“英国夏令时”称为“GMT日光时间”,所以不可能。如果Microsoft将其存储为“BST”,则它将位于DaylightName属性中。

在多年前BCL博客上发展TimeZoneInfo课程之后,我没有看到他们如何选择DaylightName的价值观。如果我猜测那是因为这是一个“时区”,而不是一个特定的城市。

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

答案 1 :(得分:3)

你应该知道所有说“标准”的时区都会在夏天正确切换到白天。例如, ;;;MEMSET - return T if an atom is a top-level member of a set, else NIL ;;;This is needed for the makeset function (DEFUN MEMSET (ATM L) (COND ( ( NULL L) NIL ) ( (EQL ATM(CAR L)) T ) ( T (MEMSET ATM (CDR L)) ) ) ) (DEFUN MAKESET(SET1) (DO ((UNIQ ())) ( (NULL SET1) UNIQ) (COND ( (NOT (MEMSET (CAR SET1) UNIQ)) (CONS (CAR SET1) UNIQ) ) ) (SETF SET1 (CDR SET1)) ) ) 将是一个可以正确处理标准时间和日光时间的对象。例如,TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time")

也是如此

答案 2 :(得分:1)

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

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