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
Объект, определяющий окончание летнего времени.
Возвращаемое значение
Объект, представляющий новое правило коррекции.
Исключения
Свойство 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 для часового пояса во время периода корректировки правила.
Возвращаемое значение
Новое правило корректировки.