TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule Metodo

Definizione

Overload

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

Crea una nuova regola di rettifica per un fuso orario specifico.

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

Crea una nuova regola di rettifica per un fuso orario specifico.

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

Crea una nuova regola di rettifica per un fuso orario specifico.

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

Parametri

dateStart
DateTime

Data di validità della regola di rettifica. Se il valore del parametro dateStart è DateTime.MinValue.Date, questa è la prima regola di rettifica valida per un fuso orario.

dateEnd
DateTime

Ultima data di validità della regola di rettifica. Se il valore del parametro dateEnd è DateTime.MaxValue.Date, la regola di rettifica non ha una data di fine.

daylightDelta
TimeSpan

Cambiamento di ora risultante dalla rettifica. Questo valore viene aggiunto alla proprietà BaseUtcOffset del fuso orario per ottenere l'offset corretto dell'ora legale rispetto al fuso orario UTC (Coordinated Universal Time). Questo valore può andare da -14 a 14.

daylightTransitionStart
TimeZoneInfo.TransitionTime

Oggetto che definisce l'inizio dell'ora legale.

daylightTransitionEnd
TimeZoneInfo.TransitionTime

Oggetto che definisce la fine dell'ora legale.

Restituisce

TimeZoneInfo.AdjustmentRule

Oggetto che rappresenta la nuova regola di rettifica.

Eccezioni

La proprietà Kind del parametro dateStart o dateEnd non è uguale a Unspecified.

-oppure- Il parametro daylightTransitionStart è uguale al parametro daylightTransitionEnd.

-oppure- Il parametro dateStart o dateEnd include un valore relativo a un'ora del giorno.

dateEnd è precedente a dateStart.

-oppure- daylightDelta è minore di -14 o maggiore di 14.

-oppure- La proprietà Milliseconds del parametro daylightDelta non è uguale a 0.

-oppure- La proprietà Ticks del parametro daylightDelta non è uguale a un numero intero di secondi.

Esempio

L'esempio seguente crea un fuso orario centrale alternativo e definisce tre regole di regolazione per i periodi 1976-1986, 1987-2006 e oltre. Queste regole vengono aggiunte a un oggetto generico List<T> i cui elementi vengono quindi copiati in una TimeZoneInfo.AdjustmentRule matrice. Questa matrice viene quindi usata nella chiamata al TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[]) metodo .

// 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())

Commenti

È possibile usare questo metodo per creare una o più regole di regolazione per un fuso orario personalizzato. Una matrice degli TimeZoneInfo.AdjustmentRule oggetti restituiti dalle chiamate a questo metodo può quindi essere passata come adjustmentRules parametro a due overload del CreateCustomTimeZone metodo. L'esempio illustra questa procedura.

Nota

Il CreateAdjustmentRule metodo può essere usato solo per definire una regola di regolazione per un nuovo fuso orario. Non può essere usato per modificare una regola di regolazione per un fuso orario esistente.

I dateStart parametri e dateEnd devono essere valori di data senza un componente di ora o viene generato un ArgumentException oggetto . Il componente ora può essere rimosso recuperando un DateTime valore dalla proprietà data e ora Date , come illustrato nelle istruzioni seguenti:

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

La Kind proprietà dei dateStart parametri e dateEnd deve essere DateTimeKind.Unspecifiedanche .

Il valore del daylightDelta parametro può essere compreso tra -14 e 14. La somma del parametro e del daylightDelta baseUtcOffset parametro usato nella chiamata al TimeZoneInfo.CreateCustomTimeZone metodo deve anche essere compreso tra -14 e 14 o viene generata un'eccezione InvalidTimeZoneException .

Nota

Il daylightDelta parametro definisce la differenza tra l'ora solare del fuso orario e l'ora legale. Non è destinato a definire l'offset di ora standard del fuso orario dall'ora UTC (Coordinated Universal Time). La TimeZoneInfo classe presuppone che questo offset da UTC sia costante durante la durata del fuso orario. Per riflettere una modifica dell'offset del fuso orario da UTC non causato dall'applicazione di una regola di regolazione, è necessario usare il CreateCustomTimeZone metodo per creare un nuovo fuso orario personalizzato.

Si applica a

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

Crea una nuova regola di rettifica per un fuso orario specifico.

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

Parametri

dateStart
DateTime

Data di validità della regola di rettifica. Se il valore è DateTime.MinValue.Date, questa è la prima regola di regolazione in vigore per un fuso orario.

dateEnd
DateTime

Ultima data di validità della regola di rettifica. Se il valore è DateTime.MaxValue.Date, la regola di regolazione non ha una data di fine.

daylightDelta
TimeSpan

Cambiamento di ora risultante dalla rettifica. Questo valore viene aggiunto alle proprietà e BaseUtcOffsetDelta del fuso orario per ottenere l'offset legale corretto dall'ora BaseUtcOffset UTC (Coordinated Universal Time). Questo valore può andare da -14 a 14.

daylightTransitionStart
TimeZoneInfo.TransitionTime

Inizio dell'ora legale.

daylightTransitionEnd
TimeZoneInfo.TransitionTime

Fine dell'ora legale.

baseUtcOffsetDelta
TimeSpan

Differenza di tempo con l'offset UTC di base per il fuso orario durante il periodo di regola di regolazione.

Restituisce

TimeZoneInfo.AdjustmentRule

Nuova regola di regolazione.

Si applica a