我需要显示带有当前时区缩写的标签。我的电脑时区目前设定为格林威治标准时间(格林威治标准时间):都柏林,爱丁堡,里斯本,伦敦和#34;因此,我希望看到BST显示,因为LN目前正处于英国夏季。
看起来信息(时区缩写)不可用。看看GMT TimeZoneInfo,关于名字我只能看到
Id "GMT Standard Time"
StandardName "GMT Standard Time"
DaylightName "GMT Daylight Time"
有没有办法从格林威治标准时间日光时间"到达BST。或任何其他可用的Windows时区信息?
答案 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”作为他们的时区。无论他们是否这样做,我怀疑他们在夏天使用“英国夏令时”!