Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule-Methode: (DateTime, DateTime, TimeSpan, TimeZoneInfo.TransitionTime, TimeZoneInfo.TransitionTime)

 

Veröffentlicht: Oktober 2016

Erstellt eine neue Anpassungsregel für eine bestimmte Zeitzone.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

public static TimeZoneInfo.AdjustmentRule CreateAdjustmentRule(
	DateTime dateStart,
	DateTime dateEnd,
	TimeSpan daylightDelta,
	TimeZoneInfo.TransitionTime daylightTransitionStart,
	TimeZoneInfo.TransitionTime daylightTransitionEnd
)

Parameter

dateStart
Type: System.DateTime

Das Gültigkeitsdatum der Anpassungsregel. Wenn der Wert des dateStart-Parameters DateTime.MinValue.Date entspricht, ist dies die erste Anpassungsregel, die für eine Zeitzone gültig ist.

dateEnd
Type: System.DateTime

Das letzte Datum, an dem die Anpassungsregel aktiv ist. Wenn der Wert des dateEnd-Parameters DateTime.MaxValue.Date ist, besitzt die Anpassungsregel kein Enddatum.

daylightDelta
Type: System.TimeSpan

Die Zeitänderung, die sich durch die Anpassung ergibt. Dieser Wert wird zur TimeZoneInfo.BaseUtcOffset-Eigenschaft der Zeitzone addiert, um die richtige Sommerzeitabweichung von der koordinierten Weltzeit (UTC) zu erhalten. Dieser Wert kann zwischen -14 und 14 liegen.

daylightTransitionStart
Type: System.TimeZoneInfo.TransitionTime

Ein Objekt, das den Beginn der Sommerzeit definiert.

daylightTransitionEnd
Type: System.TimeZoneInfo.TransitionTime

Ein Objekt, das das Ende der Sommerzeit definiert.

Rückgabewert

Type: System.TimeZoneInfo.AdjustmentRule

Ein Objekt, das die neue Anpassungsregel darstellt.

Exception Condition
ArgumentException

Die Kind-Eigenschaft des dateStart- oder dateEnd-Parameters ist nicht gleich DateTimeKind.Unspecified.

- oder -

Der daylightTransitionStart-Parameter ist identisch mit dem daylightTransitionEnd-Parameter.

- oder -

Der dateStart- oder dateEnd-Parameter enthält einen Tageszeitwert.

ArgumentOutOfRangeException

dateEnd liegt vor dateStart.

- oder -

daylightDelta ist kleiner als -14 oder größer als 14.

- oder -

Die Milliseconds-Eigenschaft des daylightDelta-Parameters ist nicht gleich 0.

- oder -

Die Ticks-Eigenschaft des daylightDelta-Parameters entspricht keiner ganzen Zahl von Sekunden.

You can use this method to create one or more adjustment rules for a custom time zone. An array of the T:System.TimeZoneInfo.AdjustmentRule objects returned by calls to this method can then be passed as the adjustmentRules parameter to two overloads of the Overload:System.TimeZoneInfo.CreateCustomTimeZone method. The example illustrates this procedure.

System_CAPS_noteHinweis

The M:System.TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo.TransitionTime,System.TimeZoneInfo.TransitionTime) method can be used only to define an adjustment rule for a new time zone; it cannot be used to modify an adjustment rule for an existing time zone.

The dateStart and dateEnd parameters must be date values without a time component or an T:System.ArgumentException is thrown. The time component can be removed by retrieving a T:System.DateTime value from the date and time's P:System.DateTime.Date property as shown in the following statements:

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

The P:System.DateTime.Kind property of the dateStart and dateEnd parameters must also be F:System.DateTimeKind.Unspecified.

The value of the daylightDelta parameter can range from -14 to 14. The sum of the daylightDelta parameter and the baseUtcOffset parameter used in the call to the M:System.TimeZoneInfo.CreateCustomTimeZone(System.String,System.TimeSpan,System.String,System.String) method must also range from -14 to 14 or an T:System.InvalidTimeZoneException is thrown.

System_CAPS_noteHinweis

The daylightDelta parameter defines the difference between a time zone's standard time and its daylight saving time. It is not intended to define the time zone's standard time offset from Coordinated Universal Time (UTC). The T:System.TimeZoneInfo class assumes that this offset from UTC is constant throughout the life of the time zone. To reflect a change in a time zone's offset from UTC that is not caused by the application of an adjustment rule, you must use the M:System.TimeZoneInfo.CreateCustomTimeZone(System.String,System.TimeSpan,System.String,System.String) method to create a new custom time zone.

The following example creates an alternate Central Standard Time zone and defines three adjustment rules for the periods 1976-1986, 1987-2006, and 2007 and beyond. These rules are added to a generic T:System.Collections.Generic.List`1 object whose elements are then copied to a T:System.TimeZoneInfo.AdjustmentRule array. This array is then used in the call to the M:System.TimeZoneInfo.CreateCustomTimeZone(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo.AdjustmentRule[]) method.

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

.NET Framework
Verfügbar seit 3.5
Zurück zum Anfang
Anzeigen: