TimeZoneInfo.AdjustmentRule.DateStart プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
調整規則が有効になる日付を取得します。
public:
property DateTime DateStart { DateTime get(); };
public DateTime DateStart { get; }
member this.DateStart : DateTime
Public ReadOnly Property DateStart As DateTime
プロパティ値
調整規則がいつ有効になるかを示す DateTime 値。
例
次の例では、調整規則の開始日と終了日など、ローカル コンピューターのシステム レジストリで定義されているすべてのタイム ゾーンに関する情報を表示します。
using System;
using System.Collections.ObjectModel;
using System.Globalization;
public class Example
{
public static void Main()
{
ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();
DateTimeFormatInfo dateInfo = CultureInfo.CurrentCulture.DateTimeFormat;
foreach (var zone in timeZones)
{
Console.WriteLine("{0} transition time information:", zone.StandardName);
Console.WriteLine(" Time zone information: ");
Console.WriteLine(" Base UTC Offset: {0}", zone.BaseUtcOffset);
Console.WriteLine(" Supports DST: {0}", zone.SupportsDaylightSavingTime);
TimeZoneInfo.AdjustmentRule[] adjustmentRules= zone.GetAdjustmentRules();
// Indicate that time zone has no adjustment rules
if (adjustmentRules.Length == 0) {
Console.WriteLine(" No adjustment rules defined.");
}
else {
Console.WriteLine(" Adjustment Rules: {0}", adjustmentRules.Length);
// Iterate adjustment rules
foreach (var adjustmentRule in adjustmentRules) {
Console.WriteLine(" Adjustment rule from {0:d} to {1:d}:",
adjustmentRule.DateStart,
adjustmentRule.DateEnd);
Console.WriteLine(" Delta: {0}", adjustmentRule.DaylightDelta);
// Get start of transition
TimeZoneInfo.TransitionTime daylightStart = adjustmentRule.DaylightTransitionStart;
// Display information on floating date rule
if (! daylightStart.IsFixedDateRule)
Console.WriteLine(" Begins at {0:t} on the {1} {2} of {3}",
daylightStart.TimeOfDay,
(WeekOfMonth) daylightStart.Week,
daylightStart.DayOfWeek,
dateInfo.GetMonthName(daylightStart.Month));
// Display information on fixed date rule
else
Console.WriteLine(" Begins at {0:t} on {1} {2}",
daylightStart.TimeOfDay,
dateInfo.GetMonthName(daylightStart.Month),
daylightStart.Day);
// Get end of transition.
TimeZoneInfo.TransitionTime daylightEnd = adjustmentRule.DaylightTransitionEnd;
// Display information on floating date rule.
if (!daylightEnd.IsFixedDateRule)
Console.WriteLine(" Ends at {0:t} on the {1} {2} of {3}",
daylightEnd.TimeOfDay,
(WeekOfMonth) daylightEnd.Week,
daylightEnd.DayOfWeek,
dateInfo.GetMonthName(daylightEnd.Month));
// Display information on fixed date rule.
else
Console.WriteLine(" Ends at {0:t} on {1} {2}",
daylightEnd.TimeOfDay,
dateInfo.GetMonthName(daylightEnd.Month),
daylightEnd.Day);
}
}
}
}
private enum WeekOfMonth
{
First = 1,
Second = 2,
Third = 3,
Fourth = 4,
Last = 5,
}
}
// A portion of the output from the example might appear as follows:
// Tonga Standard Time transition time information:
// Time zone information:
// Base UTC Offset: 13:00:00
// Supports DST: False
// No adjustment rules defined.
// Samoa Standard Time transition time information:
// Time zone information:
// Base UTC Offset: 13:00:00
// Supports DST: True
// Adjustment Rules: 4
// Adjustment rule from 1/1/0001 to 12/31/2009:
// Delta: 00:00:00
// Begins at 12:00 AM on January 1
// Ends at 12:00 AM on January 1
// Adjustment rule from 1/1/2010 to 12/31/2010:
// Delta: 01:00:00
// Begins at 11:59 PM on the Last Saturday of September
// Ends at 12:00 AM on the First Friday of January
// Adjustment rule from 1/1/2011 to 12/31/2011:
// Delta: 01:00:00
// Begins at 3:00 AM on the Fourth Saturday of September
// Ends at 4:00 AM on the First Saturday of April
// Adjustment rule from 1/1/2012 to 12/31/9999:
// Delta: 01:00:00
// Begins at 12:00 AM on the Last Sunday of September
// Ends at 1:00 AM on the First Sunday of April
// Line Islands Standard Time transition time information:
// Time zone information:
// Base UTC Offset: 14:00:00
// Supports DST: False
// No adjustment rules defined.
open System
open System.Globalization
let timeZones = TimeZoneInfo.GetSystemTimeZones()
let dateInfo = CultureInfo.CurrentCulture.DateTimeFormat
type WeekOfMonth =
| First = 1
| Second = 2
| Third = 3
| Fourth = 4
| Last = 5
for zone in timeZones do
printfn $"{zone.StandardName} transition time information:"
printfn " Time zone information: "
printfn $" Base UTC Offset: {zone.BaseUtcOffset}"
printfn $" Supports DST: {zone.SupportsDaylightSavingTime}"
let adjustmentRules= zone.GetAdjustmentRules()
// Indicate that time zone has no adjustment rules
if adjustmentRules.Length = 0 then
printfn " No adjustment rules defined."
else
printfn $" Adjustment Rules: {adjustmentRules.Length}"
// Iterate adjustment rules
for adjustmentRule in adjustmentRules do
printfn $" Adjustment rule from {adjustmentRule.DateStart:d} to {adjustmentRule.DateEnd:d}:"
printfn $" Delta: {adjustmentRule.DaylightDelta}"
// Get start of transition
let daylightStart = adjustmentRule.DaylightTransitionStart
// Display information on floating date rule
if not daylightStart.IsFixedDateRule then
printfn $" Begins at {daylightStart.TimeOfDay:t} on the {enum<WeekOfMonth> daylightStart.Week} {daylightStart.DayOfWeek} of {dateInfo.GetMonthName daylightStart.Month}"
// Display information on fixed date rule
else
printfn $" Begins at {daylightStart.TimeOfDay:t} on {dateInfo.GetMonthName daylightStart.Month} {daylightStart.Day}"
// Get end of transition.
let daylightEnd = adjustmentRule.DaylightTransitionEnd
// Display information on floating date rule.
if not daylightEnd.IsFixedDateRule then
printfn $" Ends at {daylightEnd.TimeOfDay:t} on the {enum<WeekOfMonth> daylightEnd.Week} {daylightEnd.DayOfWeek} of {dateInfo.GetMonthName daylightEnd.Month}"
// Display information on fixed date rule.
else
printfn $" Ends at {daylightEnd.TimeOfDay:t} on {dateInfo.GetMonthName daylightEnd.Month} {daylightEnd.Day}"
// A portion of the output from the example might appear as follows:
// Tonga Standard Time transition time information:
// Time zone information:
// Base UTC Offset: 13:00:00
// Supports DST: False
// No adjustment rules defined.
// Samoa Standard Time transition time information:
// Time zone information:
// Base UTC Offset: 13:00:00
// Supports DST: True
// Adjustment Rules: 4
// Adjustment rule from 1/1/0001 to 12/31/2009:
// Delta: 00:00:00
// Begins at 12:00 AM on January 1
// Ends at 12:00 AM on January 1
// Adjustment rule from 1/1/2010 to 12/31/2010:
// Delta: 01:00:00
// Begins at 11:59 PM on the Last Saturday of September
// Ends at 12:00 AM on the First Friday of January
// Adjustment rule from 1/1/2011 to 12/31/2011:
// Delta: 01:00:00
// Begins at 3:00 AM on the Fourth Saturday of September
// Ends at 4:00 AM on the First Saturday of April
// Adjustment rule from 1/1/2012 to 12/31/9999:
// Delta: 01:00:00
// Begins at 12:00 AM on the Last Sunday of September
// Ends at 1:00 AM on the First Sunday of April
// Line Islands Standard Time transition time information:
// Time zone information:
// Base UTC Offset: 14:00:00
// Supports DST: False
// No adjustment rules defined.
Imports System.Collections.ObjectModel
Imports System.Globalization
Module Example
Public Sub Main()
Dim timeZones As ReadOnlyCollection(Of TimeZoneInfo) = TimeZoneInfo.GetSystemTimeZones()
Dim dateInfo As DateTimeFormatInfo = CultureInfo.CurrentCulture.DateTimeFormat
For Each zone In timeZones
Console.WriteLine("{0} transition time information:", zone.StandardName)
Console.WriteLine(" Time zone information: ")
Console.WriteLine(" Base UTC Offset: {0}", zone.BaseUtcOffset)
Console.WriteLine(" Supports DST: {0}", zone.SupportsDaylightSavingTime)
Dim adjustmentRules() As TimeZoneInfo.AdjustmentRule = zone.GetAdjustmentRules()
' Indicate that time zone has no adjustment rules
If adjustmentRules.Length = 0 Then
Console.WriteLine(" No adjustment rules defined.")
Else
Console.WriteLine(" Adjustment Rules: {0}", adjustmentRules.Length)
' Iterate adjustment rules
For Each adjustmentRule In adjustmentRules
Console.WriteLine(" Adjustment rule from {0:d} to {1:d}:",
adjustmentRule.DateStart,
adjustmentRule.DateEnd)
Console.WriteLine(" Delta: {0}", adjustmentRule.DaylightDelta)
' Get start of transition
Dim daylightStart As TimeZoneInfo.TransitionTime = adjustmentRule.DaylightTransitionStart
' Display information on floating date rule
If Not daylightStart.IsFixedDateRule Then
Console.WriteLine(" Begins at {0:t} on the {1} {2} of {3}",
daylightStart.TimeOfDay,
CType(daylightStart.Week, WeekOfMonth),
daylightStart.DayOfWeek,
dateInfo.GetMonthName(daylightStart.Month))
' Display information on fixed date rule
Else
Console.WriteLine(" Begins at {0:t} on {1} {2}",
daylightStart.TimeOfDay,
dateInfo.GetMonthName(daylightStart.Month),
daylightStart.Day)
End If
' Get end of transition.
Dim daylightEnd As TimeZoneInfo.TransitionTime = adjustmentRule.DaylightTransitionEnd
' Display information on floating date rule.
If Not daylightEnd.IsFixedDateRule Then
Console.WriteLine(" Ends at {0:t} on the {1} {2} of {3}",
daylightEnd.TimeOfDay,
CType(daylightEnd.Week, WeekOfMonth),
daylightEnd.DayOfWeek,
dateInfo.GetMonthName(daylightEnd.Month))
' Display information on fixed date rule.
Else
Console.WriteLine(" Ends at {0:t} on {1} {2}",
daylightEnd.TimeOfDay,
dateInfo.GetMonthName(daylightEnd.Month),
daylightEnd.Day)
End If
Next
End If
Next
End Sub
Private Enum WeekOfMonth As Integer
First = 1
Second = 2
Third = 3
Fourth = 4
Last = 5
End Enum
End Module
' A portion of the output from the example might appear as follows:
' Tonga Standard Time transition time information:
' Time zone information:
' Base UTC Offset: 13:00:00
' Supports DST: False
' No adjustment rules defined.
' Samoa Standard Time transition time information:
' Time zone information:
' Base UTC Offset: 13:00:00
' Supports DST: True
' Adjustment Rules: 4
' Adjustment rule from 1/1/0001 to 12/31/2009:
' Delta: 00:00:00
' Begins at 12:00 AM on January 1
' Ends at 12:00 AM on January 1
' Adjustment rule from 1/1/2010 to 12/31/2010:
' Delta: 01:00:00
' Begins at 11:59 PM on the Last Saturday of September
' Ends at 12:00 AM on the First Friday of January
' Adjustment rule from 1/1/2011 to 12/31/2011:
' Delta: 01:00:00
' Begins at 3:00 AM on the Fourth Saturday of September
' Ends at 4:00 AM on the First Saturday of April
' Adjustment rule from 1/1/2012 to 12/31/9999:
' Delta: 01:00:00
' Begins at 12:00 AM on the Last Sunday of September
' Ends at 1:00 AM on the First Sunday of April
' Line Islands Standard Time transition time information:
' Time zone information:
' Base UTC Offset: 14:00:00
' Supports DST: False
' No adjustment rules defined.
注釈
プロパティの DateStart 値は、時刻コンポーネントのない日付値です。 特定の調整規則が有効になる日付を定義します。 これは、一連の切り替え (通常は夏時間への 1 回の切り替えと標準時への 1 回の切り替えによって定義される) が有効となる日付です。 たとえば、調整規則は 2017 年 1 月 1 日に有効になり、3 月の第 2 日曜日に夏時間に切り替え、11 月の最初の日曜日に標準時に戻すことができます。 調整ルールの開始日は、最初の遷移の日付に関連付けられていないことに注意してください。
タイム ゾーン対応アプリケーションで使用するDateEndカスタム調整規則を作成するときに、履歴のタイム ゾーン情報を操作する必要がない場合は、このプロパティに割り当てることができますDateTime.MinValue.Date
。
重要
他の方法で実行する説得力のある理由がない限り、タイム ゾーンが標準時刻を観察する時間間隔内に発生する調整ルールの開始日を定義する必要があります。 説得力のある理由がない限り、タイム ゾーンで夏時間が観察される時間間隔内に発生する調整ルールの開始日を定義しないでください。 たとえば、3 月の第 3 日曜日にタイム ゾーンの夏時間からの切り替えが発生し、その夏時間への切り替えが 10 月の最初の日曜日に発生する場合、調整規則の有効開始日は、夏時間の期間内に発生するため、特定の年の 1 月 1 日にすることはできません。
既定では、Windows XP のレジストリは、開始日が 0001 年 1 月 1 日 (月曜日) の 1 つの調整規則をDateTime.MinValue.Date
タイム ゾーンごとに定義します。 米国のタイム ゾーンの場合、Windows Vista のレジストリでは、次の 2 つの調整規則が定義されます。
20001 年 1 月 1 日(月)から 2006 年 12 月 31 日 (日)
2007 年 1 月 1 日(月)から 9999 年 12 月 31 日 (金)
つまり、レジストリに格納されているタイム ゾーン調整規則は、現在のタイム ゾーン関連の操作を実行するのに役立ちますが、履歴のタイム ゾーン情報を取得するために確実に使用することはできません。 タイム ゾーン対応の履歴アプリケーションで使用できる複数の調整規則を使用してカスタム タイム ゾーンを定義する方法については、「 方法: 調整規則を使用してタイム ゾーンを作成する」を参照してください。