TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule Метод

Определение

Перегрузки

CreateAdjustmentRule(DateTime, DateTime, TimeSpan, TimeZoneInfo+TransitionTime, TimeZoneInfo+TransitionTime)

Создает новое правило коррекции для определенного часового пояса.

CreateAdjustmentRule(DateTime, DateTime, TimeSpan, TimeZoneInfo+TransitionTime, TimeZoneInfo+TransitionTime, TimeSpan)

Создает новое правило коррекции для определенного часового пояса.

CreateAdjustmentRule(DateTime, DateTime, TimeSpan, TimeZoneInfo+TransitionTime, TimeZoneInfo+TransitionTime)

Создает новое правило коррекции для определенного часового пояса.

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

Дата начала действия правила коррекции. Если параметр dateStart имеет значение DateTime.MinValue.Date, то это первое правило коррекции, действующее для часового пояса.

dateEnd
DateTime

Последняя дата действия правила коррекции. Если параметр dateEnd имеет значение DateTime.MaxValue.Date, то данное правило коррекции не имеет даты окончания.

daylightDelta
TimeSpan

Изменение времени в результате коррекции. Это значение добавляется к свойству BaseUtcOffset часового пояса для получения правильного смещения летнего времени от времени в формате UTC (UTC). Это значение может быть в диапазоне от -14 до 14.

daylightTransitionStart
TimeZoneInfo.TransitionTime

Объект, определяющий начало летнего времени.

daylightTransitionEnd
TimeZoneInfo.TransitionTime

Объект, определяющий окончание летнего времени.

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

TimeZoneInfo.AdjustmentRule

Объект, представляющий новое правило коррекции.

Исключения

Свойство Kind параметра dateStart или dateEnd не равно Unspecified.

-или- Параметр daylightTransitionStart равен параметру daylightTransitionEnd.

-или- Параметр dateStart или dateEnd включает значение времени суток.

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

-или- Параметр daylightDelta меньше –14 или больше 14.

-или- Свойство Milliseconds параметра daylightDelta не равно 0.

-или- Свойство Ticks параметра daylightDelta не равно целому числу секунд.

Примеры

В следующем примере создается альтернативный часовой пояс "Стандартный" и определяются три правила корректировки для периодов 1976-1986, 1987-2006 и 2007 и выше. Эти правила добавляются в универсальный List<T> объект, элементы которого затем копируются в TimeZoneInfo.AdjustmentRule массив. Затем этот массив используется в вызове 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;
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
let delta = TimeSpan(1, 0, 0)
let adjustmentList = ResizeArray()

// Define end rule (for 1976-2006)
let transitionRuleEnd = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 2, 0, 0), 10, 5, DayOfWeek.Sunday)
// Define rule (1976-1986)
let transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 2, 0, 0), 04, 05, DayOfWeek.Sunday)
TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(DateTime(1976, 1, 1), DateTime(1986, 12, 31), delta, transitionRuleStart, transitionRuleEnd)
|> adjustmentList.Add
// Define rule (1987-2006)  
let transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 2, 0, 0), 04, 01, DayOfWeek.Sunday)
TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(DateTime(1987, 1, 1), DateTime(2006, 12, 31), delta, transitionRuleStart, transitionRuleEnd)
|> adjustmentList.Add
// Define rule (2007- )  
let transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 2, 0, 0), 03, 02, DayOfWeek.Sunday)
let transitionRuleEnd = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 2, 0, 0), 11, 01, DayOfWeek.Sunday)
TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(DateTime(2007, 01, 01), DateTime.MaxValue.Date, delta, transitionRuleStart, transitionRuleEnd)
|> adjustmentList.Add
            
// Create custom U.S. Central Standard Time zone         
TimeZoneInfo.CreateCustomTimeZone("Central Standard Time", 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())

Комментарии

Этот метод можно использовать для создания одного или нескольких правил корректировки для настраиваемого часового пояса. Массив объектов, TimeZoneInfo.AdjustmentRule возвращаемых вызовами этого метода, затем можно передать в качестве adjustmentRules параметра двум перегрузкам CreateCustomTimeZone метода. Этот пример иллюстрирует эту процедуру.

Примечание

Этот CreateAdjustmentRule метод можно использовать только для определения правила корректировки для нового часового пояса. Его нельзя использовать для изменения правила корректировки для существующего часового пояса.

Значения dateStart даты и dateEnd параметры должны быть значениями даты без компонента времени или ArgumentException создания. Компонент времени можно удалить, извлекая DateTime значение из свойства даты и времени Date , как показано в следующих инструкциях:

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

Свойство Kind dateStart и dateEnd параметры также должны быть DateTimeKind.Unspecified.

Значение daylightDelta параметра может варьироваться от -14 до 14. daylightDelta Сумма параметра и baseUtcOffset параметра, используемого в вызове TimeZoneInfo.CreateCustomTimeZone метода, также должны находиться в диапазоне от -14 до 14 или InvalidTimeZoneException возникает.

Примечание

Параметр daylightDelta определяет разницу между стандартным временем часового пояса и временем летнего времени. Оно не предназначено для определения стандартного смещения часового пояса от времени в формате UTC. Класс TimeZoneInfo предполагает, что это смещение от UTC является постоянным в течение всего времени существования часового пояса. Чтобы отразить изменение смещения часового пояса в формате UTC, которое не вызвано применением правила корректировки, необходимо использовать CreateCustomTimeZone метод для создания нового настраиваемого часового пояса.

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

CreateAdjustmentRule(DateTime, DateTime, TimeSpan, TimeZoneInfo+TransitionTime, TimeZoneInfo+TransitionTime, TimeSpan)

Создает новое правило коррекции для определенного часового пояса.

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

Параметры

dateStart
DateTime

Дата начала действия правила коррекции. Если значением является DateTime.MinValue.Date, это первое правило корректировки, которое действует для часового пояса.

dateEnd
DateTime

Последняя дата действия правила коррекции. Если значением является DateTime.MaxValue.Date, правило корректировки не имеет даты окончания.

daylightDelta
TimeSpan

Изменение времени в результате коррекции. Это значение добавляется в часовой пояс BaseUtcOffset и BaseUtcOffsetDelta свойства, чтобы получить правильное смещение дневного света от utc. Это значение может быть в диапазоне от -14 до 14.

daylightTransitionStart
TimeZoneInfo.TransitionTime

Начало летнего времени.

daylightTransitionEnd
TimeZoneInfo.TransitionTime

Конец летнего времени.

baseUtcOffsetDelta
TimeSpan

Разница между временем с базовым смещением в формате UTC для часового пояса во время периода корректировки правила.

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

TimeZoneInfo.AdjustmentRule

Новое правило корректировки.

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