TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(DateTime, DateTime, TimeSpan, TimeZoneInfo+TransitionTime, TimeZoneInfo+TransitionTime) Метод

Определение

Создает новое правило коррекции для определенного часового пояса.Creates a new adjustment rule for a particular time zone.

public:
 static TimeZoneInfo::AdjustmentRule ^ CreateAdjustmentRule(DateTime dateStart, DateTime dateEnd, TimeSpan daylightDelta, TimeZoneInfo::TransitionTime daylightTransitionStart, TimeZoneInfo::TransitionTime daylightTransitionEnd);
public static TimeZoneInfo.AdjustmentRule CreateAdjustmentRule (DateTime dateStart, DateTime dateEnd, TimeSpan daylightDelta, TimeZoneInfo.TransitionTime daylightTransitionStart, TimeZoneInfo.TransitionTime daylightTransitionEnd);
static member CreateAdjustmentRule : DateTime * DateTime * TimeSpan * TimeZoneInfo.TransitionTime * TimeZoneInfo.TransitionTime -> TimeZoneInfo.AdjustmentRule
Public Shared Function CreateAdjustmentRule (dateStart As DateTime, dateEnd As DateTime, daylightDelta As TimeSpan, daylightTransitionStart As TimeZoneInfo.TransitionTime, daylightTransitionEnd As TimeZoneInfo.TransitionTime) As TimeZoneInfo.AdjustmentRule

Параметры

dateStart
DateTime

Дата начала действия правила коррекции.The effective date of the adjustment rule. Если параметр dateStart имеет значение DateTime.MinValue.Date, то это первое правило коррекции, действующее для часового пояса.If the value of the dateStart parameter is DateTime.MinValue.Date, this is the first adjustment rule in effect for a time zone.

dateEnd
DateTime

Последняя дата действия правила коррекции.The last date that the adjustment rule is in force. Если параметр dateEnd имеет значение DateTime.MaxValue.Date, то данное правило коррекции не имеет даты окончания.If the value of the dateEnd parameter is DateTime.MaxValue.Date, the adjustment rule has no end date.

daylightDelta
TimeSpan

Изменение времени в результате коррекции.The time change that results from the adjustment. Это значение добавляется к свойству BaseUtcOffset часового пояса для получения правильного смещения летнего времени от времени в формате UTC (UTC).This value is added to the time zone's BaseUtcOffset property to obtain the correct daylight offset from Coordinated Universal Time (UTC). Это значение может быть в диапазоне от -14 до 14.This value can range from -14 to 14.

daylightTransitionStart
TimeZoneInfo.TransitionTime

Объект, определяющий начало летнего времени.An object that defines the start of daylight saving time.

daylightTransitionEnd
TimeZoneInfo.TransitionTime

Объект, определяющий окончание летнего времени.An object that defines the end of daylight saving time.

Возвращаемое значение

TimeZoneInfo.AdjustmentRule

Объект, представляющий новое правило коррекции.An object that represents the new adjustment rule.

Исключения

Свойство Kind параметра dateStart или dateEnd не равно Unspecified.The Kind property of the dateStart or dateEnd parameter does not equal Unspecified.

-или--or- Параметр daylightTransitionStart равен параметру daylightTransitionEnd.The daylightTransitionStart parameter is equal to the daylightTransitionEnd parameter.

-или--or- Параметр dateStart или dateEnd включает значение времени суток.The dateStart or dateEnd parameter includes a time of day value.

Момент, указанный в параметре dateEnd, наступает раньше, чем момент, указанный в параметре dateStart.dateEnd is earlier than dateStart.

-или--or- Параметр daylightDelta меньше –14 или больше 14.daylightDelta is less than -14 or greater than 14.

-или--or- Свойство Milliseconds параметра daylightDelta не равно 0.The Milliseconds property of the daylightDelta parameter is not equal to 0.

-или--or- Свойство Ticks параметра daylightDelta не равно целому числу секунд.The Ticks property of the daylightDelta parameter does not equal a whole number of seconds.

Примеры

В следующем примере создается альтернативный Центральный часовой пояс и определяются три правила коррекции для периодов 1976-1986, 1987-2006 и 2007.The following example creates an alternate Central Standard Time zone and defines three adjustment rules for the periods 1976-1986, 1987-2006, and 2007 and beyond. Эти правила добавляются к универсальному List<T> объекту, элементы которого затем копируются в TimeZoneInfo.AdjustmentRule массив.These rules are added to a generic List<T> object whose elements are then copied to a TimeZoneInfo.AdjustmentRule array. Затем этот массив используется в вызове TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[]) метода.This array is then used in the call to the TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[]) method.

// 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;
List<TimeZoneInfo.AdjustmentRule> adjustmentList = new List<TimeZoneInfo.AdjustmentRule>();
// 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());       
' Create alternate Central Standard Time to include historical time zone information
'
' Declare necessary TimeZoneInfo.AdjustmentRule objects for time zone
Dim delta As New TimeSpan(1, 0, 0)
Dim adjustment As TimeZoneInfo.AdjustmentRule
Dim adjustmentList As New List(Of TimeZoneInfo.AdjustmentRule)
' Declare transition time variables to hold transition time information
Dim transitionRuleStart, transitionRuleEnd As TimeZoneInfo.TransitionTime

' Define end rule (for 1976-2006)
transitionRuleEnd = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#02:00:00AM#, 10, 5, DayOfWeek.Sunday)
' Define rule (1976-1986)
transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#2:00:00AM#, 04, 05, DayOfWeek.Sunday)
adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(#01/01/1976#, #12/31/1986#, delta, transitionRuleStart, transitionRuleEnd)
adjustmentList.Add(adjustment)
' Define rule (1987-2006)  
transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#2:00:00AM#, 04, 01, DayOfWeek.Sunday)
adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(#01/01/1987#, #12/31/2006#, delta, transitionRuleStart, transitionRuleEnd)
adjustmentList.Add(adjustment)
' Define rule (2007- )  
transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#2:00:00AM#, 03, 02, DayOfWeek.Sunday)
transitionRuleEnd = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#2:00:00AM#, 11, 01, DayOfWeek.Sunday)
adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(#01/01/2007#, Date.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())     

Комментарии

Этот метод можно использовать для создания одного или нескольких правил коррекции для пользовательского часового пояса.You can use this method to create one or more adjustment rules for a custom time zone. Массив TimeZoneInfo.AdjustmentRule объектов, возвращаемых вызовами этого метода, может быть передан в качестве adjustmentRules параметра двум перегрузкам CreateCustomTimeZone метода.An array of the TimeZoneInfo.AdjustmentRule objects returned by calls to this method can then be passed as the adjustmentRules parameter to two overloads of the CreateCustomTimeZone method. Эта процедура показана в примере.The example illustrates this procedure.

Примечание

CreateAdjustmentRuleМетод можно использовать только для определения правила коррекции для нового часового пояса. его нельзя использовать для изменения правила коррекции для существующего часового пояса.The CreateAdjustmentRule method can be used only to define an adjustment rule for a new time zone; it cannot be used to modify an adjustment rule for an existing time zone.

dateStartПараметры и dateEnd должны быть значениями даты без компонента времени или ArgumentException исключением.The dateStart and dateEnd parameters must be date values without a time component or an ArgumentException is thrown. Компонент времени можно удалить, извлекая DateTime значение из свойства даты и времени Date , как показано в следующих инструкциях:The time component can be removed by retrieving a DateTime value from the date and time's Date property as shown in the following statements:

DateTime.MinValue.Date  
DateTime.MaxValue.Date  
DateTime.Now.Date   
dateVariable.Date  

KindСвойство dateStart dateEnd параметров и также должно иметь значение DateTimeKind.Unspecified .The Kind property of the dateStart and dateEnd parameters must also be DateTimeKind.Unspecified.

Значение daylightDelta параметра может находиться в диапазоне от-14 до 14.The value of the daylightDelta parameter can range from -14 to 14. Сумма daylightDelta параметра и baseUtcOffset параметра, используемого в вызове TimeZoneInfo.CreateCustomTimeZone метода, также должны находиться в диапазоне от-14 до 14 или InvalidTimeZoneException выдано исключение.The sum of the daylightDelta parameter and the baseUtcOffset parameter used in the call to the TimeZoneInfo.CreateCustomTimeZone method must also range from -14 to 14 or an InvalidTimeZoneException is thrown.

Примечание

daylightDeltaПараметр определяет разницу между стандартным временем часового пояса и его летним временем.The daylightDelta parameter defines the difference between a time zone's standard time and its daylight saving time. Он не предназначен для определения стандартного смещения часового пояса относительно времени в формате UTC.It is not intended to define the time zone's standard time offset from Coordinated Universal Time (UTC). TimeZoneInfoКласс предполагает, что это смещение от времени в формате UTC является константой в течение жизненного цикла часового пояса.The TimeZoneInfo class assumes that this offset from UTC is constant throughout the life of the time zone. Чтобы отразить изменение в смещении часового пояса относительно времени в формате UTC, которое не вызвано применением правила коррекции, необходимо использовать CreateCustomTimeZone метод для создания нового настраиваемого часового пояса.To reflect a change in a time zone's offset from UTC that is not caused by the application of an adjustment rule, you must use the CreateCustomTimeZone method to create a new custom time zone.

Применяется к