Udostępnij za pośrednictwem


TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule Metoda

Definicja

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

TimeZoneInfo.AdjustmentRule

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

TimeZoneInfo.AdjustmentRule

Nowa reguła korekty.

Dotyczy