使用方法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");
其给出期望的输出。
使用以下方法可以得到您想要的结果:
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方法。