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