使用方法FindSystemTimeZoneById获取时区未返回正确的时区对象

本文关键字:时区 对象 FindSystemTimeZoneById 获取 使用方法 返回 | 更新日期: 2023-09-27 17:58:14

我正在使用方法从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"); 

其给出期望的输出。

使用方法FindSystemTimeZoneById获取时区未返回正确的时区对象

使用以下方法可以得到您想要的结果:

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方法。