TimeZoneInfo.AdjustmentRule Class
Updated: December 2009
Provides information about a time zone adjustment, such as the transition to and from daylight saving time.
Assembly: System.Core (in System.Core.dll)
'Declaration <SerializableAttribute> _ <HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort := True)> _ <HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort := True)> _ Public NotInheritable Class AdjustmentRule _ Implements IEquatable(Of TimeZoneInfo..::.AdjustmentRule), ISerializable, _ IDeserializationCallback 'Usage Dim instance As TimeZoneInfo.AdjustmentRule
Note: |
|---|
The HostProtectionAttribute attribute applied to this type or member has the following Resources property value: MayLeakOnAbort | MayLeakOnAbort. The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser). For more information, see the HostProtectionAttribute class or SQL Server Programming and Host Protection Attributes. |
The TimeZoneInfo.AdjustmentRule class defines the effective start and end dates of a particular time change to and from daylight saving time, respectively, as well as its delta (the exact amount by which the adjustment causes the time zone's standard time to change). In addition, two properties return TimeZoneInfo.TransitionTime objects that define when each transition to and from standard time occurs.
Note: |
|---|
An instance of the TimeZoneInfo.AdjustmentRule class is immutable. Once an object has been created, its values cannot be modified. |
To create a TimeZoneInfo.AdjustmentRule object, call the static (Shared in Visual Basic) TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule method. You can then supply an array of TimeZoneInfo.AdjustmentRule objects to two of the overloads of the TimeZoneInfo.CreateCustomTimeZone method. To retrieve the adjustment rules of a particular time zone, call its TimeZoneInfo.GetAdjustmentRules method, which returns an array of TimeZoneInfo.AdjustmentRule objects.
The following example retrieves all time zones defined on the local system and displays complete information about their adjustment rules to the console.
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) Else ' 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) Else 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) Else 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 Next End If Console.WriteLine() Next End Sub
The following is a small portion of the output generated by the example. The exact output will vary depending on the operating system and the date the example is run.
Morocco Standard Time Adjustment rules
Adjustment rule #1
Start Date: Tuesday, January 01, 2008
End Date: Wednesday, December 31, 2008
Time Change: 1:00 hours
Annual Start: The Last Saturday of May at 11:59 PM
Annual End: The Last Sunday of August at 11:59 PM
Adjustment rule #2
Start Date: Thursday, January 01, 2009
End Date: Thursday, December 31, 2009
Time Change: 1:00 hours
Annual Start: The Last Sunday of May at 11:59 PM
Annual End: The Third Thursday of August at 11:59 PM
Coordinated Universal Time has no adjustment rules
GMT Standard Time Adjustment rules
Start Date: Monday, January 01, 0001
End Date: Friday, December 31, 9999
Time Change: 1:00 hours
Annual Start: The Last Sunday of March at 1:00 AM
Annual End: The Last Sunday of October at 2:00 AM
Greenwich Standard Time has no adjustment rules
W. Europe Standard Time Adjustment rules
Start Date: Monday, January 01, 0001
End Date: Friday, December 31, 9999
Time Change: 1:00 hours
Annual Start: The Last Sunday of March at 2:00 AM
Annual End: The Last Sunday of October at 3:00 AM
Central Europe Standard Time Adjustment rules
Start Date: Monday, January 01, 0001
End Date: Friday, December 31, 9999
Time Change: 1:00 hours
Annual Start: The Last Sunday of March at 2:00 AM
Annual End: The Last Sunday of October at 3:00 AM
Romance Standard Time Adjustment rules
Start Date: Monday, January 01, 0001
End Date: Friday, December 31, 9999
Time Change: 1:00 hours
Annual Start: The Last Sunday of March at 2:00 AM
Annual End: The Last Sunday of October at 3:00 AM
Central European Standard Time Adjustment rules
Start Date: Monday, January 01, 0001
End Date: Friday, December 31, 9999
Time Change: 1:00 hours
Annual Start: The Last Sunday of March at 2:00 AM
Annual End: The Last Sunday of October at 3:00 AM
W. Central Africa Standard Time has no adjustment rules
Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Note: