System.TimeZoneInfo.CreateCustomTimeZone 方法 (String, TimeSpan, String, String, String, TimeZoneInfo.AdjustmentRule[])

方法描述

创建带指定标识符的自定义时区、与协调世界时 (UTC) 的偏移量、显示名称、标准时间名称、夏时制名称和夏时制规则。

语法定义(C# System.TimeZoneInfo.CreateCustomTimeZone 方法 (String, TimeSpan, String, String, String, TimeZoneInfo.AdjustmentRule[]) 的用法)

public static TimeZoneInfo CreateCustomTimeZone(
	string id,
	TimeSpan baseUtcOffset,
	string displayName,
	string standardDisplayName,
	string daylightDisplayName,
	TimeZoneInfo..::..AdjustmentRule[] adjustmentRules
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
id System-String 时区标识符。
baseUtcOffset System-TimeSpan 一个对象,表示此时区和协调世界时 (UTC) 之间的时差。
displayName System-String 新时区的显示名称。
standardDisplayName System-String 新时区的标准时间名称。
daylightDisplayName System-String 新时区的夏时制名称。
adjustmentRules System-TimeZoneInfo-AdjustmentRule[] 一个数组,它将基本 UTC 偏移量增加了特定的时间。
返回值 System.TimeZoneInfo 一个表示新时区的 TimeZoneInfo 对象。

提示和注释

此 TimeZoneInfo.CreateCustomTimeZone 方法重载适合于创建支持夏时制的时区。 若要定义不支持夏时制的时区,请使用 TimeZoneInfo.CreateCustomTimeZone 或 TimeZoneInfo.CreateCustomTimeZone 方法。

下表显示提供给 TimeZoneInfo.CreateCustomTimeZone 方法的参数与该方法调用返回的 TimeZoneInfo 对象成员之间的关系。

CreateCustomTimeZone 参数

TimeZoneInfo 成员

id

Id

baseUtcOffset

BaseUtcOffset

displayName

DisplayName

standardDisplayName

StandardName

daylightDisplayName

DaylightName

adjustmentRules

GetAdjustmentRules 方法返回的 System.TimeZoneInfo.AdjustmentRule 对象的数组。

通常,时区的标准时间名称与其标识符是相同的。 但时区标识符的长度不应超过 32 个字符。 传递给 displayName 参数的字符串遵循相当标准的格式。 显示名称的第一部分是时区与协调世界时的基本偏移量,以首字母缩略词 GMT(表示格林尼治标准时间)表示并括在括号内。 随后的字符串标识时区本身以及/或者时区中的一个或多个城市、地区或国家。 例如:

复制

(GMT+02:00) Athens, Beirut, Istanbul, Minsk

(GMT-02:00) Mid-Atlantic

(GMT-07:00) Mountain Time (US & Canada)

baseUtcOffset 参数为所有时区的调整规则定义自定义时区与协调世界时 (UTC) 的偏移量。 也就是说,TimeZoneInfo 对象模型假定时区与 UTC 的偏移量在时区的整个生命中是常量,并且独立于特定调整规则而存在。 若要反映已更改其与 UTC 的偏移量的时区,必须创建新时区对象。

可通过以下操作来定义时区的调整规则:

调用 CreateFloatingDateRule 或 CreateFixedDateRule 方法来定义每个调整规则的开始和结束转换时间。

为每个调整规则调用 CreateAdjustmentRule 方法。

将调整规则分配给可作为 adjustmentRules 参数传递的数组。

System.TimeZoneInfo.CreateCustomTimeZone 方法 (String, TimeSpan, String, String, String, TimeZoneInfo.AdjustmentRule[])例子

然后将本地时间转换为新时区中的时间并显示结果。

// Define transition times to/from DST
TimeZoneInfo.TransitionTime startTransition, endTransition;
startTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 4, 0, 0), 
                                                                  10, 2, DayOfWeek.Sunday); 
endTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 3, 0, 0), 
                                                                3, 2, DayOfWeek.Sunday);
// Define adjustment rule
TimeSpan delta = new TimeSpan(1, 0, 0);
TimeZoneInfo.AdjustmentRule adjustment;
adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(1999, 10, 1), DateTime.MaxValue.Date, delta, startTransition, endTransition);
// Create array for adjustment rules
TimeZoneInfo.AdjustmentRule[] adjustments = {adjustment};
// Define other custom time zone arguments
string displayName = "(GMT-04:00) Antarctica/Palmer Time";
string standardName = "Palmer Time";
string daylightName = "Palmer Daylight Time";
TimeSpan offset = new TimeSpan(-4, 0, 0);
TimeZoneInfo palmer = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName, daylightName, adjustments);
Console.WriteLine("The current time is {0} {1}",  
                  TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.Local, palmer), 
                  palmer.StandardName);

异常

异常 异常描述
ArgumentNullException id 参数为 null。
ArgumentException
  • id 参数是空字符串 ("")。
  • baseUtcOffset 参数不表示整分钟数。
ArgumentOutOfRangeException baseUtcOffset 参数大于 14 小时或小于 -14 小时。
InvalidTimeZoneException
  • 在 adjustmentRules 参数中指定的调整规则重叠。
  • 在 adjustmentRules 参数中指定的调整规则不是按时间顺序排列。
  • adjustmentRules 中的一个或多个元素为 null。
  • 一个日期可以有多个应用于该日期的调整规则。
  • baseUtcOffset 参数与 adjustmentRules 数组中一个或多个对象的 TimeZoneInfo.AdjustmentRule.DaylightDelta 值的和大于 14 小时或小于 -14 小时。

命名空间

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