TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Przeciążenia
CreateAdjustmentRule(DateTime, DateTime, TimeSpan, TimeZoneInfo+TransitionTime, TimeZoneInfo+TransitionTime) |
Tworzy nową regułę korekty dla określonej strefy czasowej. |
CreateAdjustmentRule(DateTime, DateTime, TimeSpan, TimeZoneInfo+TransitionTime, TimeZoneInfo+TransitionTime, TimeSpan) |
Tworzy nową regułę korekty dla określonej strefy czasowej. |
CreateAdjustmentRule(DateTime, DateTime, TimeSpan, TimeZoneInfo+TransitionTime, TimeZoneInfo+TransitionTime)
Tworzy nową regułę korekty dla określonej strefy czasowej.
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
Parametry
- dateStart
- DateTime
Data wejścia w życie reguły korekty. Jeśli wartość parametru dateStart
to DateTime.MinValue.Date
, jest to pierwsza reguła korekty obowiązującą dla strefy czasowej.
- dateEnd
- DateTime
Ostatnia data stosowania reguły korekty. Jeśli wartość parametru dateEnd
to DateTime.MaxValue.Date
, reguła korekty nie ma daty zakończenia.
- daylightDelta
- TimeSpan
Zmiana czasu wynika z korekty. Ta wartość jest dodawana do właściwości strefy czasowej BaseUtcOffset w celu uzyskania poprawnego przesunięcia dziennego z uniwersalnego czasu koordynowanego (UTC). Ta wartość może mieścić się w zakresie od -14 do 14.
- daylightTransitionStart
- TimeZoneInfo.TransitionTime
Obiekt, który definiuje początek czasu letniego.
- daylightTransitionEnd
- TimeZoneInfo.TransitionTime
Obiekt, który definiuje koniec czasu letniego.
Zwraca
Obiekt reprezentujący nową regułę korekty.
Wyjątki
Właściwość Kind lub dateEnd
parametru dateStart
nie jest równa Unspecified.
-lub-
Parametr daylightTransitionStart
jest równy parametrowi daylightTransitionEnd
.
-lub-
Parametr dateStart
or dateEnd
zawiera wartość godziny dnia.
dateEnd
jest wcześniejsza niż dateStart
.
-lub-
daylightDelta
wartość jest mniejsza niż -14 lub większa niż 14.
-lub-
Właściwość Milliseconds parametru daylightDelta
nie jest równa 0.
-lub-
Właściwość Ticks parametru daylightDelta
nie jest równa liczbie całkowitej sekund.
Przykłady
W poniższym przykładzie tworzona jest alternatywna środkowa strefa czasowa (czas standardowy) i zdefiniowano trzy reguły korekty dla okresów 1976–1986, 1987–2006 i 2007 i nowszych. Te reguły są dodawane do obiektu ogólnego List<T> , którego elementy są następnie kopiowane do tablicy TimeZoneInfo.AdjustmentRule . Ta tablica jest następnie używana w wywołaniu TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[]) metody .
// 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())
Uwagi
Za pomocą tej metody można utworzyć co najmniej jedną regułę korekty niestandardowej strefy czasowej. Tablica TimeZoneInfo.AdjustmentRule obiektów zwracanych przez wywołania tej metody może następnie zostać przekazana jako adjustmentRules
parametr do dwóch przeciążeń CreateCustomTimeZone metody. W przykładzie pokazano tę procedurę.
Uwaga
Metoda CreateAdjustmentRule może służyć tylko do definiowania reguły korekty dla nowej strefy czasowej. Nie można jej użyć do modyfikowania reguły korekty dla istniejącej strefy czasowej.
Parametry dateStart
i dateEnd
muszą być wartościami daty bez składnika godziny lub zgłaszanym parametrem ArgumentException . Składnik godziny można usunąć, pobierając DateTime wartość z właściwości daty i godziny Date , jak pokazano w następujących instrukcjach:
DateTime.MinValue.Date
DateTime.MaxValue.Date
DateTime.Now.Date
dateVariable.Date
Właściwość Kind i dateEnd
parametrów dateStart
również musi mieć wartość DateTimeKind.Unspecified.
Wartość parametru daylightDelta
może wahać się od -14 do 14. Suma parametru i parametru daylightDelta
użytego w wywołaniu metody TimeZoneInfo.CreateCustomTimeZone musi również mieścić się w zakresie od -14 do 14 lub InvalidTimeZoneException jest zgłaszana.baseUtcOffset
Uwaga
Parametr daylightDelta
definiuje różnicę między czasem standardowym strefy czasowej a czasem oszczędzenia czasu letniego. Nie jest ona przeznaczona do definiowania standardowego przesunięcia czasowego strefy czasowej z uniwersalnego czasu koordynowanego (UTC). Klasa TimeZoneInfo zakłada, że to przesunięcie od UTC jest stałe przez cały czas trwania strefy czasowej. Aby odzwierciedlić zmianę przesunięcia strefy czasowej z czasu UTC, która nie jest spowodowana przez zastosowanie reguły korekty, należy użyć CreateCustomTimeZone metody , aby utworzyć nową niestandardową strefę czasową.
Dotyczy
CreateAdjustmentRule(DateTime, DateTime, TimeSpan, TimeZoneInfo+TransitionTime, TimeZoneInfo+TransitionTime, TimeSpan)
Tworzy nową regułę korekty dla określonej strefy czasowej.
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
Parametry
- dateStart
- DateTime
Data wejścia w życie reguły korekty. Jeśli wartość to DateTime.MinValue.Date
, jest to pierwsza reguła korekty obowiązująca dla strefy czasowej.
- dateEnd
- DateTime
Ostatnia data stosowania reguły korekty. Jeśli wartość to DateTime.MaxValue.Date
, reguła korekty nie ma daty zakończenia.
- daylightDelta
- TimeSpan
Zmiana czasu wynika z korekty. Ta wartość jest dodawana do właściwości strefy czasowej BaseUtcOffset i BaseUtcOffsetDelta w celu uzyskania poprawnego przesunięcia dziennego z uniwersalnego czasu koordynowanego (UTC). Ta wartość może mieścić się w zakresie od -14 do 14.
- daylightTransitionStart
- TimeZoneInfo.TransitionTime
Początek czasu letniego.
- daylightTransitionEnd
- TimeZoneInfo.TransitionTime
Koniec czasu letniego.
- baseUtcOffsetDelta
- TimeSpan
Różnica czasu z bazowym przesunięciem UTC dla strefy czasowej w okresie reguły korekty.
Zwraca
Nowa reguła korekty.