TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(DateTime, DateTime, TimeSpan, TimeZoneInfo+TransitionTime, TimeZoneInfo+TransitionTime) メソッド

定義

特定のタイム ゾーンの新しい調整規則を作成します。Creates a new adjustment rule for a particular time zone.

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

調整規則が有効になる日付。The effective date of the adjustment rule. dateStart パラメーターが DateTime.MinValue.Date の場合、これがタイム ゾーンで有効な最初の調整規則です。If the value of the dateStart parameter is DateTime.MinValue.Date, this is the first adjustment rule in effect for a time zone.

dateEnd
DateTime

調整規則が適用される最後の日付。The last date that the adjustment rule is in force. dateEnd パラメーターが DateTime.MaxValue.Date の場合、調整規則の終了日はありません。If the value of the dateEnd parameter is DateTime.MaxValue.Date, the adjustment rule has no end date.

daylightDelta
TimeSpan

調整の結果から生じる時刻の変更。The time change that results from the adjustment. この値がタイム ゾーンの BaseUtcOffset プロパティに追加され、世界協定時刻 (UTC) からの夏時間の正しいオフセットが得られます。This value is added to the time zone's BaseUtcOffset property to obtain the correct daylight offset from Coordinated Universal Time (UTC). この値の範囲は -14 ~ 14 です。This value can range from -14 to 14.

daylightTransitionStart
TimeZoneInfo.TransitionTime

夏時間の開始日を定義するオブジェクト。An object that defines the start of daylight saving time.

daylightTransitionEnd
TimeZoneInfo.TransitionTime

夏時間の終了日を定義するオブジェクト。An object that defines the end of daylight saving time.

戻り値

新しい調整規則を表すオブジェクト。An object that represents the new adjustment rule.

例外

Kind パラメーターまたは dateStart パラメーターの dateEnd プロパティが Unspecified と等しくありません。The Kind property of the dateStart or dateEnd parameter does not equal Unspecified.

または-or- daylightTransitionStart パラメーターは daylightTransitionEnd パラメーターと等価です。The daylightTransitionStart parameter is equal to the daylightTransitionEnd parameter.

または-or- dateStart パラメーターまたは dateEnd パラメーターに時刻値が含まれています。The dateStart or dateEnd parameter includes a time of day value.

dateEnddateStart よりも前の日時です。dateEnd is earlier than dateStart.

または-or- daylightDelta が -14 未満か、14 を超えています。daylightDelta is less than -14 or greater than 14.

または-or- Milliseconds パラメーターの daylightDelta プロパティが 0 ではありません。The Milliseconds property of the daylightDelta parameter is not equal to 0.

または-or- Ticks パラメーターの daylightDelta プロパティの秒数が整数ではありません。The Ticks property of the daylightDelta parameter does not equal a whole number of seconds.

次の例では、第1中部標準タイムゾーンを作成し、1976-1986、1987-2006、2007の期間に対して3つの調整ルールを定義します。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. これらの規則は、要素が TimeZoneInfo.AdjustmentRule 配列にコピーされる汎用 List<T> オブジェクトに追加されます。These rules are added to a generic List<T> object whose elements are then copied to a TimeZoneInfo.AdjustmentRule array. この配列は、TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[]) メソッドの呼び出しで使用されます。This array is then used in the call to the TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String, String, 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());       
' 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())     

注釈

このメソッドを使用して、カスタムタイムゾーンに対して1つまたは複数の調整規則を作成できます。You can use this method to create one or more adjustment rules for a custom time zone. このメソッドの呼び出しによって返された TimeZoneInfo.AdjustmentRule オブジェクトの配列を、adjustmentRules パラメーターとして CreateCustomTimeZone メソッドの2つのオーバーロードに渡すことができます。An array of the TimeZoneInfo.AdjustmentRule objects returned by calls to this method can then be passed as the adjustmentRules parameter to two overloads of the CreateCustomTimeZone method. この手順の例を次に示します。The example illustrates this procedure.

注意

CreateAdjustmentRule メソッドは、新しいタイムゾーンの調整規則を定義するためにのみ使用できます。既存のタイムゾーンの調整規則を変更するために使用することはできません。The CreateAdjustmentRule 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.

dateStart パラメーターと dateEnd パラメーターは、時刻コンポーネントのない日付値でなければなりません。また、ArgumentException がスローされます。The dateStart and dateEnd parameters must be date values without a time component or an ArgumentException is thrown. 時刻部分は、次のステートメントに示すように、日付と時刻の Date プロパティから DateTime 値を取得することによって削除できます。The time component can be removed by retrieving a DateTime value from the date and time's Date property as shown in the following statements:

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

dateStart パラメーターと dateEnd パラメーターの Kind プロパティも DateTimeKind.Unspecifiedである必要があります。The Kind property of the dateStart and dateEnd parameters must also be DateTimeKind.Unspecified.

daylightDelta パラメーターの値は、-14 ~ 14 の範囲で指定できます。The value of the daylightDelta parameter can range from -14 to 14. daylightDelta パラメーターと TimeZoneInfo.CreateCustomTimeZone メソッドの呼び出しで使用される baseUtcOffset パラメーターの合計も、-14 ~ 14 の範囲で指定する必要があります。または、InvalidTimeZoneException がスローされます。The sum of the daylightDelta parameter and the baseUtcOffset parameter used in the call to the TimeZoneInfo.CreateCustomTimeZone method must also range from -14 to 14 or an InvalidTimeZoneException is thrown.

注意

daylightDelta パラメーターは、タイムゾーンの標準時間と夏時間の差を定義します。The daylightDelta parameter defines the difference between a time zone's standard time and its daylight saving time. 世界協定時刻 (UTC) からのタイムゾーンの標準時間オフセットを定義することは想定されていません。It is not intended to define the time zone's standard time offset from Coordinated Universal Time (UTC). TimeZoneInfo クラスは、UTC からのオフセットがタイムゾーンの有効期間全体にわたって一定であることを前提としています。The TimeZoneInfo class assumes that this offset from UTC is constant throughout the life of the time zone. 調整規則の適用によるものではない UTC からのタイムゾーンのオフセットの変更を反映するには、CreateCustomTimeZone メソッドを使用して、新しいカスタムタイムゾーンを作成する必要があります。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 CreateCustomTimeZone method to create a new custom time zone.

適用対象