TimeZoneInfo.AdjustmentRule.DateStart Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá datum, kdy se pravidlo úpravy projeví.
public:
property DateTime DateStart { DateTime get(); };
public DateTime DateStart { get; }
member this.DateStart : DateTime
Public ReadOnly Property DateStart As DateTime
Hodnota vlastnosti
Hodnota DateTime , která označuje, kdy se pravidlo úpravy projeví.
Příklady
Následující příklad zobrazí informace o všech časových pásmech definovaných v systémovém registru místního počítače, včetně počátečního a koncového data pravidel úprav.
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.
Poznámky
Hodnota DateStart vlastnosti je hodnota data bez součásti času. Definuje datum, kdy se projeví konkrétní pravidlo úpravy. Jedná se o datum, kdy se projeví sada přechodů (které jsou obvykle definovány jedním přechodem na letní čas a jeden přechod zpět na standardní čas). Například pravidlo úpravy může platit 1. ledna 2017, které umožňuje přechod na letní čas v druhé neděli v březnu a přechod zpět na standardní čas v první neděli listopadu. Všimněte si, že počáteční datum pravidla úpravy není vázáno na datum prvního přechodu.
Vlastnost můžete přiřadit DateTime.MinValue.Date
DateEnd při vytváření vlastního pravidla úpravy pro použití v aplikaci s podporou časového pásma, která nemusí pracovat s historickými informacemi o časovém pásmu.
Důležité
Pokud neexistuje přesvědčivý důvod k tomu, abyste to udělali jinak, měli byste definovat počáteční datum pravidla úpravy, které nastane v časovém intervalu, během kterého časové pásmo sleduje standardní čas. Pokud k tomu nemáte přesvědčivý důvod, neměli byste definovat počáteční datum pravidla úpravy, které nastane v časovém intervalu, během kterého časové pásmo sleduje letní čas. Pokud například přechod časového pásma z letního času nastane třetí neděli v březnu a jeho přechod na letní čas nastane v první neděli v říjnu, efektivní počáteční datum pravidla úpravy nesmí být 1. ledna určitého roku, protože k tomuto datu dochází v období letního času.
Ve výchozím nastavení registr v Windows XP definuje jedno pravidlo úpravy, jehož počáteční datum je pondělí, leden 01, 0001 (hodnota DateTime.MinValue.Date
) pro každé časové pásmo. V případě časových pásem v USA definuje registr v systému Windows Vista dvě pravidla úpravy:
-
- ledna 0001, do neděle, 31. prosince 2006.
-
- ledna 2007, do pátku, 31. prosince 9999.
To znamená, že i když jsou pravidla úprav časových pásem uložená v registru užitečná pro provádění aktuálních operací souvisejících s časovým pásmem, nelze je spolehlivě použít k načítání historických informací o časovém pásmu. Informace o definování vlastního časového pásma s více pravidly úpravy, která lze použít v historické aplikaci pracující s časovým pásmem, naleznete v tématu Postupy: Vytvoření časových pásem s pravidly úpravy.