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 已找到时区标识符,但注册表数据已损坏。

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.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 系统要求。