System.TimeZoneInfo.FindSystemTimeZoneById 方法
方法描述
根据其标识符从注册表中检索 TimeZoneInfo 对象。
语法定义(C# System.TimeZoneInfo.FindSystemTimeZoneById 方法 的用法)
public static TimeZoneInfo FindSystemTimeZoneById( string id )
参数/返回值
参数值/返回值 | 参数类型/返回类型 | 参数描述/返回描述 |
---|---|---|
id | System-String | 时区标识符,它对应于 Id 属性。 |
返回值 | System.TimeZoneInfo | 一个对象,其标识符为 id 参数的值。 |
提示和注释
若要匹配成功,id 参数必须在长度上与时区的注册表项完全对应,但与大小写无关。即,id 与时区标识符的比较不区分大小写。 若要根据部分匹配检索时区对象,则可以编写自定义过程来使用 GetSystemTimeZones 方法返回的 TimeZoneInfo 对象的只读集合。
FindSystemTimeZoneById 尝试将 id 匹配至注册表 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones 分支的子项名称(对于 Windows XP 和 Windows Vista)。 此分支不一定包含综合的时区标识符列表。 如果应用程序需要,您可以创建一个特定时区,具体方法为调用 CreateCustomTimeZone 方法的重载之一,或者调用 FromSerializedString 来反序列化表示所需时区的 TimeZoneInfo 对象。 然而,这些方法调用所创建的时区不包括在注册表中,从而不能使用 FindSystemTimeZoneById 方法进行检索。 只能通过由 CreateCustomTimeZone 或 FromSerializedString 方法调用返回的对象引用来访问这些自定义时区。
System.TimeZoneInfo.FindSystemTimeZoneById 方法例子
然后该示例使用此 TimeZoneInfo 对象将本地时间转换为东京时间,并确定其是东京标准时间还是东京夏时制。
// Get time in local time zone DateTime thisTime = DateTime.Now; Console.WriteLine("Time in {0} zone: {1}", TimeZoneInfo.Local.IsDaylightSavingTime(thisTime) ? TimeZoneInfo.Local.DaylightName : TimeZoneInfo.Local.StandardName, thisTime); Console.WriteLine(" UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local)); // Get Tokyo Standard Time zone TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time"); DateTime tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst); Console.WriteLine("Time in {0} zone: {1}", TimeZoneInfo.Local.IsDaylightSavingTime(tstTime) ? tst.DaylightName : tst.StandardName, tstTime); Console.WriteLine(" UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(tstTime, tst));
异常
异常 | 异常描述 |
---|---|
OutOfMemoryException | 系统没有足够内存保留有关时区的信息。 |
ArgumentNullException | id 参数为 null。 |
TimeZoneNotFoundException | 未找到 id 指定的时区标识符。 这表示名称与 id 匹配的注册表项不存在,或者该项存在但不包含任何时区数据。 |
SecurityException | 进程没有读取包含时区信息的注册表项所需的权限。 |
InvalidTimeZoneException | 已找到时区标识符,但注册表数据已损坏。 |
版本信息
.NET Framework 受以下版本支持:4、3.5 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1
适用平台
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。