使用方法FindSystemTimeZoneById获取Timezone不返回正确的Timezone对象

时间:2016-07-23 06:53:11

标签: c# datetime timezone

我正在使用方法从TimeZoneId获取时区

var timezoneObject= TimeZoneInfo.FindSystemTimeZoneById("UTC");

我期待的是

timezoneObject.Id : UTC
timezoneObject.DisplayName :(UTC) Coordinated Universal Time
timezoneObject.StandardName: Coordinated Universal Time
timezoneObject.DaylightName: Coordinated Universal Time

但是我得到了结果

timezoneObject.Id : UTC
timezoneObject.DisplayName :UTC
timezoneObject.StandardName: UTC
timezoneObject.DaylightName: UTC

但是在

的情况下
var timezoneObject= TimeZoneInfo.FindSystemTimeZoneById("Dateline Standard Time"); 

它给出了所需的输出。

1 个答案:

答案 0 :(得分:2)

使用此方法可以获得所需的结果:

var timezoneObject = TimeZoneInfo.GetSystemTimeZones().FirstOrDefault(x=> x.Id == "UTC");

输出继电器:

timezoneObject.Id : UTC
timezoneObject.DisplayName :(UTC) Coordinated Universal Time
timezoneObject.StandardName: Coordinated Universal Time
timezoneObject.DaylightName: Coordinated Universal Time

来自文档:

  

id参数必须与时区的注册表完全对应   密钥的长度,但不是以防万一,以便成功匹配;那   是,id与时区标识符的比较是   不区分大小写。如果要根据时间检索时区对象   部分匹配,您可以编写与之配合使用的自定义过程   由...返回的TimeZoneInfo对象的只读集合   GetSystemTimeZones方法。