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 |
|
ArgumentOutOfRangeException | baseUtcOffset 参数大于 14 小时或小于 -14 小时。 |
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 系统要求。