System.TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule 方法
方法描述
为特定时区创建新的调整规则。
语法定义(C# System.TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule 方法 的用法)
public static TimeZoneInfo..::..AdjustmentRule CreateAdjustmentRule( DateTime dateStart, DateTime dateEnd, TimeSpan daylightDelta, TimeZoneInfo..::..TransitionTime daylightTransitionStart, TimeZoneInfo..::..TransitionTime daylightTransitionEnd )
参数/返回值
参数值/返回值 | 参数类型/返回类型 | 参数描述/返回描述 |
---|---|---|
dateStart | System-DateTime | 调整规则的生效日期。如果 dateStart 参数的值为 DateTime.MinValue.Date,则这是对某时区生效的第一个调整规则。 |
dateEnd | System-DateTime | 调整规则生效的最后日期。如果 dateEnd 参数的值为 DateTime.MaxValue.Date,则调整规则没有结束日期。 |
daylightDelta | System-TimeSpan | 调整产生的时间更改。将此值添加到时区的 TimeZoneInfo.BaseUtcOffset 属性,以获取与协调世界时 (UTC) 之间正确的白昼偏移量。此值的范围是从 -14 到 14。 |
daylightTransitionStart | System-TimeZoneInfo-TransitionTime | 一个对象,定义夏时制的起始时间。 |
daylightTransitionEnd | System-TimeZoneInfo-TransitionTime | 一个对象,定义夏时制的结束时间。 |
返回值 | System.TimeZoneInfo.AdjustmentRule | 一个对象,表示新的调整规则。 |
提示和注释
可以使用此方法为自定义时区创建一个或多个调整规则。 然后,将调用此方法返回的 TimeZoneInfo.AdjustmentRule 对象数组作为 adjustmentRules 参数传递给 CreateCustomTimeZone 方法的两个重载。 下面的示例演示此过程。
注意
CreateAdjustmentRule 方法只能用于定义新时区的调整规则;不能将其用于修改现有时区的调整规则。
dateStart 和 dateEnd 参数必须是不包含时间分量的日期值,否则会引发 ArgumentException。 要移除时间分量,可以从日期和时间的 Date 属性检索 DateTime 值,如下列语句所示:
复制
DateTime.MinValue.Date
DateTime.MaxValue.Date
DateTime.Now.Date
dateVariable.Date
dateStart 和 dateEnd 参数的 Kind 属性还必须是 DateTimeKind.Unspecified。
daylightDelta 参数的值范围为 -14 到 14。 daylightDelta 参数的和的范围为 -14 到 14,在 TimeZoneInfo.CreateCustomTimeZone 方法调用中使用的 baseUtcOffset 参数的和也必须必须介于 -14 与 14 之间,否则会引发 InvalidTimeZoneException。
注意
daylightDelta 参数定义时区的标准时间和其夏时制之间的时差。 它不用于定义时区的标准时间与协调世界时 (UTC) 的偏移量。 TimeZoneInfo 类假定与 UTC 的此偏移量在时区的整个生命中是常量。 若要反映非应用调整规则引起的时区与 UTC 的偏移量的变化,必须使用 CreateCustomTimeZone 方法创建新自定义时区。
System.TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule 方法例子
此数组随后将用于 TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo.AdjustmentRule[]) 方法调用。
// Create alternate Central Standard Time to include historical time zone information // // Declare necessary TimeZoneInfo.AdjustmentRule objects for time zone TimeSpan delta = new TimeSpan(1, 0, 0); TimeZoneInfo.AdjustmentRule adjustment; ListadjustmentList = new List (); // Declare transition time variables to hold transition time information TimeZoneInfo.TransitionTime transitionRuleStart, transitionRuleEnd; // Define end rule (for 1976-2006) transitionRuleEnd = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 10, 5, DayOfWeek.Sunday); // Define rule (1976-1986) transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 04, 05, DayOfWeek.Sunday); adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(1976, 1, 1), new DateTime(1986, 12, 31), delta, transitionRuleStart, transitionRuleEnd); adjustmentList.Add(adjustment); // Define rule (1987-2006) transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 04, 01, DayOfWeek.Sunday); adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(1987, 1, 1), new DateTime(2006, 12, 31), delta, transitionRuleStart, transitionRuleEnd); adjustmentList.Add(adjustment); // Define rule (2007- ) transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 03, 02, DayOfWeek.Sunday); transitionRuleEnd = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 11, 01, DayOfWeek.Sunday); adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(2007, 01, 01), DateTime.MaxValue.Date, delta, transitionRuleStart, transitionRuleEnd); adjustmentList.Add(adjustment); // Create custom U.S. Central Standard Time zone TimeZoneInfo.CreateCustomTimeZone("Central Standard Time", new TimeSpan(-6, 0, 0), "(GMT-06:00) Central Time (US Only)", "Central Standard Time", "Central Daylight Time", adjustmentList.ToArray());
异常
异常 | 异常描述 |
---|---|
ArgumentException |
|
ArgumentOutOfRangeException |
|
版本信息
.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 系统要求。