public:
 cli::array <TimeZoneInfo::AdjustmentRule ^> ^ GetAdjustmentRules();
public TimeZoneInfo.AdjustmentRule[] GetAdjustmentRules ();
member this.GetAdjustmentRules : unit -> TimeZoneInfo.AdjustmentRule[]
Public Function GetAdjustmentRules () As TimeZoneInfo.AdjustmentRule()
// Get all time zones from system ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones(); string[] monthNames = CultureInfo.CurrentCulture.DateTimeFormat.MonthNames; // Get each time zone foreach (TimeZoneInfo timeZone in timeZones) TimeZoneInfo.AdjustmentRule[] adjustments = timeZone.GetAdjustmentRules(); // Display message for time zones with no adjustments if (adjustments.Length == 0) Console.WriteLine("{0} has no adjustment rules", timeZone.StandardName); // Handle time zones with 1 or 2+ adjustments differently bool showCount = false; int ctr = 0; string spacer = ""; Console.WriteLine("{0} Adjustment rules", timeZone.StandardName); if (adjustments.Length > 1) showCount = true; spacer = " "; // Iterate adjustment rules foreach (TimeZoneInfo.AdjustmentRule adjustment in adjustments) if (showCount) Console.WriteLine(" Adjustment rule #{0}", ctr+1); ctr++; // Display general adjustment information Console.WriteLine("{0} Start Date: {1:D}", spacer, adjustment.DateStart); Console.WriteLine("{0} End Date: {1:D}", spacer, adjustment.DateEnd); Console.WriteLine("{0} Time Change: {1}:{2:00} hours", spacer, adjustment.DaylightDelta.Hours, adjustment.DaylightDelta.Minutes); // Get transition start information TimeZoneInfo.TransitionTime transitionStart = adjustment.DaylightTransitionStart; Console.Write("{0} Annual Start: ", spacer); if (transitionStart.IsFixedDateRule) Console.WriteLine("On {0} {1} at {2:t}", monthNames[transitionStart.Month - 1], transitionStart.Day, transitionStart.TimeOfDay); Console.WriteLine("The {0} {1} of {2} at {3:t}", ((WeekOfMonth)transitionStart.Week).ToString(), transitionStart.DayOfWeek.ToString(), monthNames[transitionStart.Month - 1], transitionStart.TimeOfDay); // Get transition end information TimeZoneInfo.TransitionTime transitionEnd = adjustment.DaylightTransitionEnd; Console.Write("{0} Annual End: ", spacer); if (transitionEnd.IsFixedDateRule) Console.WriteLine("On {0} {1} at {2:t}", monthNames[transitionEnd.Month - 1], transitionEnd.Day, transitionEnd.TimeOfDay); Console.WriteLine("The {0} {1} of {2} at {3:t}", ((WeekOfMonth)transitionEnd.Week).ToString(), transitionEnd.DayOfWeek.ToString(), monthNames[transitionEnd.Month - 1], transitionEnd.TimeOfDay); Console.WriteLine(); type WeekOfMonth = | First = 1 | Second = 2 | Third = 3 | Fourth = 4 | Last = 5 let showStartAndEndDates () = // Get all time zones from system let timeZones = TimeZoneInfo.GetSystemTimeZones() let monthNames = CultureInfo.CurrentCulture.DateTimeFormat.MonthNames // Get each time zone for timeZone in timeZones do let adjustments = timeZone.GetAdjustmentRules() // Display message for time zones with no adjustments if adjustments.Length = 0 then printfn $"{timeZone.StandardName} has no adjustment rules" // Handle time zones with 1 or 2+ adjustments differently let mutable ctr = 0 let showCount, spacer = if adjustments.Length > 1 then true, " " false, "" printfn $"{timeZone.StandardName} Adjustment rules" // Iterate adjustment rules for adjustment in adjustments do if showCount then printfn $" Adjustment rule #{ctr + 1}" ctr <- ctr + 1 // Display general adjustment information printfn $"{spacer} Start Date: {adjustment.DateStart:D}" printfn $"{spacer} End Date: {adjustment.DateEnd:D}" printfn $"{spacer} Time Change: {adjustment.DaylightDelta.Hours}:{adjustment.DaylightDelta.Minutes:D2} hours" // Get transition start information let transitionStart = adjustment.DaylightTransitionStart printf $"{spacer} Annual Start: " if transitionStart.IsFixedDateRule then printfn $"On {monthNames[transitionStart.Month - 1]} {transitionStart.Day} at {transitionStart.TimeOfDay:t}" printfn $"The {transitionStart.Week |> enum<WeekOfMonth>} {transitionStart.DayOfWeek} of {monthNames[transitionStart.Month - 1]} at {transitionStart.TimeOfDay:t}" // Get transition end information let transitionEnd = adjustment.DaylightTransitionEnd printf $"{spacer} Annual End: " if transitionEnd.IsFixedDateRule then printfn $"On {monthNames[transitionEnd.Month - 1]} {transitionEnd.Day} at {transitionEnd.TimeOfDay:t}" printfn $"The {enum<WeekOfMonth> transitionEnd.Week} {transitionEnd.DayOfWeek} of {monthNames[transitionEnd.Month - 1]} at {transitionEnd.TimeOfDay:t}" Console.WriteLine() Private Enum WeekOfMonth As Integer First = 1 Second = 2 Third = 3 Fourth = 4 Last = 5 End Enum Private Sub ShowStartAndEndDates() ' Get all time zones from system Dim timeZones As ReadOnlyCollection(Of TimeZoneInfo) = TimeZoneInfo.GetSystemTimeZones() ' Get each time zone For Each timeZone As TimeZoneInfo In timeZones Dim adjustments() As TimeZoneInfo.AdjustmentRule = timeZone.GetAdjustmentRules() ' Display message for time zones with no adjustments If adjustments.Length = 0 Then Console.WriteLine("{0} has no adjustment rules", timeZone.StandardName) ' Handle time zones with 1 or 2+ adjustments differently Dim showCount As Boolean = False Dim ctr As Integer = 0 Dim spacer As String = "" Console.WriteLine("{0} Adjustment rules", timeZone.StandardName) If adjustments.Length > 1 Then showCount = True : spacer = " " ' Iterate adjustment rules For Each adjustment As TimeZoneInfo.AdjustmentRule in adjustments If showCount Then Console.WriteLine(" Adjustment rule #{0}", ctr+1) ctr += 1 End If ' Display general adjustment information Console.WriteLine("{0} Start Date: {1:D}", spacer, adjustment.DateStart) Console.WriteLine("{0} End Date: {1:D}", spacer, adjustment.DateEnd) Console.WriteLine("{0} Time Change: {1}:{2:00} hours", spacer, _ adjustment.DaylightDelta.Hours, adjustment.DaylightDelta.Minutes) ' Get transition start information Dim transitionStart As TimeZoneInfo.TransitionTime = adjustment.DaylightTransitionStart Console.Write("{0} Annual Start: ", spacer) If transitionStart.IsFixedDateRule Then Console.WriteLine("On {0} {1} at {2:t}", _ MonthName(transitionStart.Month), _ transitionStart.Day, _ transitionStart.TimeOfDay) Console.WriteLine("The {0} {1} of {2} at {3:t}", _ CType(transitionStart.Week, WeekOfMonth).ToString(), _ transitionStart.DayOfWeek.ToString(), _ MonthName(transitionStart.Month), _ transitionStart.TimeOfDay) End If ' Get transition end information Dim transitionEnd As TimeZoneInfo.TransitionTime = adjustment.DaylightTransitionEnd Console.Write("{0} Annual End: ", spacer) If transitionEnd.IsFixedDateRule Then Console.WriteLine("On {0} {1} at {2:t}", _ MonthName(transitionEnd.Month), _ transitionEnd.Day, _ transitionEnd.TimeOfDay) Console.WriteLine("The {0} {1} of {2} at {3:t}", _ CType(transitionEnd.Week, WeekOfMonth).ToString(), _ transitionEnd.DayOfWeek.ToString(), _ MonthName(transitionEnd.Month), _ transitionEnd.TimeOfDay) End If End If Console.WriteLine() End Sub

方法 GetAdjustmentRules 會擷取 物件的陣列 System.TimeZoneInfo.AdjustmentRule 。 陣列中的每個物件都會定義該時區調整的有效開始和結束日期,以及其差異 (調整會導致時間變更) 。 此外,兩個屬性會傳回 System.TimeZoneInfo.TransitionTime 物件,這些物件會定義每一年轉換到標準時間及從標準時間轉換的時間。

如果時區有多個調整規則,通常會從索引 0) 的最早 (排序為索引 Length 的最新 (- 1) 。

如果時區沒有調整規則,此方法 GetAdjustmentRules 會傳回空陣列 (陣列,其 Length 為零) 。

對 方法所 GetAdjustmentRules 傳回之陣列元素所做的任何修改,都不會反映在屬於特定時區的調整規則中。 若要修改時區的調整規則 (,例如反映其日光節約時間的歷程轉換,) 您必須使用適當的調整規則建立新的時區,而不是修改現有的時區。