Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
.NET Framework 3.5
DaylightTime Class
Collapse All/Expand All Collapse All
This page is specific to
Microsoft Visual Studio 2008/.NET Framework 3.5

Other versions are also available for the following:
.NET Framework Class Library
DaylightTime Class

Defines the period of daylight saving time.

Namespace:  System.Globalization
Assembly:  mscorlib (in mscorlib.dll)
Visual Basic (Declaration)
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class DaylightTime
Visual Basic (Usage)
Dim instance As DaylightTime
C#
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class DaylightTime
Visual C++
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class DaylightTime
JScript
public class DaylightTime

Daylight saving time is a period during the year when the time is advanced, usually by an hour, to take advantage of the extended daylight hours. At the end of the period, the time is set back to the standard time.

The DaylightTime class is used extensively by members of the System..::.TimeZone class.

The following code example uses the TimeZone..::.GetDaylightChanges(Int32) method to return the daylight saving time period and offset for selected years.

Visual Basic
' Example of the TimeZone.GetDaylightChanges( Integer ) method.
Imports System
Imports System.Globalization
Imports Microsoft.VisualBasic

Module DaylightChangesDemo

    ' Get the local time zone and a base local time.
    Dim localZone As TimeZone = TimeZone.CurrentTimeZone

    Sub CreateDaylightTime( year As Integer )

        ' Create a DaylightTime object for the specified year.
        Dim daylight As DaylightTime = _
            localZone.GetDaylightChanges( year )

        ' Display the start and end dates and the time change.
        Console.WriteLine( "{0,-7}{1,-20:yyyy-MM-dd HH:mm}" & _
            "{2,-20:yyyy-MM-dd HH:mm}{3}", _
            year, daylight.Start, daylight.End, daylight.Delta )
    End Sub 

    Sub Main( )

        Const headFmt As String = "{0,-7}{1,-20}{2,-20}{3}"

        Console.WriteLine( _
            "This example of TimeZone.GetDaylightChanges( " & _
            "Integer ) generates the " & vbCrLf & "following " & _
            "output, which varies depending on the time zone " & _
            "in which " & vbCrLf & "it is run. The example " & _
            "creates DaylightTime objects for specified " & _
            vbCrLf & "years and displays the start and end dates " & _
            "and time change for " & vbCrLf &  "daylight " & _
            "saving time." & vbCrLf )

        ' Write a message explaining that start dates prior to 1986 
        ' in the en-US culture may not be correct.
        If CultureInfo.CurrentCulture.Name = "en-US" Then

            Console.WriteLine( _
                "Note: In the [en-US] culture, all start dates " & _
                "are calculated from " & vbCrLf & "the first " & _
                "Sunday in April, based on a standard set in " & _
                "1986. For " & vbCrLf & "dates prior to 1986, " & _
                "the calculated start date may not be accurate." )
        End If

        Console.WriteLine( vbCrLf & "Local time: {0}" & vbCrLf, _
            localZone.StandardName )

        Console.WriteLine( headFmt, "Year", "Start", "End", "Change" )
        Console.WriteLine( headFmt, "----", "-----", "---", "------" )

        CreateDaylightTime( 1960 )
        CreateDaylightTime( 1970 )
        CreateDaylightTime( 1980 )
        CreateDaylightTime( 1990 )
        CreateDaylightTime( 2000 )
        CreateDaylightTime( 2001 )
        CreateDaylightTime( 2002 )
        CreateDaylightTime( 2003 )
        CreateDaylightTime( 2004 )
        CreateDaylightTime( 2005 )
        CreateDaylightTime( 2020 )
        CreateDaylightTime( 2040 )
    End Sub 
End Module 

' This example of TimeZone.GetDaylightChanges( Integer ) generates the
' following output, which varies depending on the time zone in which
' it is run. The example creates DaylightTime objects for specified
' years and displays the start and end dates and time change for
' daylight saving time.
' 
' Note: In the [en-US] culture, all start dates are calculated from
' the first Sunday in April, based on a standard set in 1986. For
' dates prior to 1986, the calculated start date may not be accurate.
' 
' Local time: Pacific Standard Time
' 
' Year   Start               End                 Change
' ----   -----               ---                 ------
' 1960   1960-04-03 02:00    1960-10-30 02:00    01:00:00
' 1970   1970-04-05 02:00    1970-10-25 02:00    01:00:00
' 1980   1980-04-06 02:00    1980-10-26 02:00    01:00:00
' 1990   1990-04-01 02:00    1990-10-28 02:00    01:00:00
' 2000   2000-04-02 02:00    2000-10-29 02:00    01:00:00
' 2001   2001-04-01 02:00    2001-10-28 02:00    01:00:00
' 2002   2002-04-07 02:00    2002-10-27 02:00    01:00:00
' 2003   2003-04-06 02:00    2003-10-26 02:00    01:00:00
' 2004   2004-04-04 02:00    2004-10-31 02:00    01:00:00
' 2005   2005-04-03 02:00    2005-10-30 02:00    01:00:00
' 2020   2020-04-05 02:00    2020-10-25 02:00    01:00:00
' 2040   2040-04-01 02:00    2040-10-28 02:00    01:00:00
C#
// Example of the TimeZone.GetDaylightChanges( int ) method.
using System;
using System.Globalization;

class DaylightChangesDemo
{
    // Get the local time zone and a base local time.
    static TimeZone localZone = TimeZone.CurrentTimeZone;

    static void CreateDaylightTime( int year )
    {
        // Create a DaylightTime object for the specified year.
        DaylightTime daylight = 
            localZone.GetDaylightChanges( year );

        // Display the start and end dates and the time change.
        Console.WriteLine( "{0,-7}{1,-20:yyyy-MM-dd HH:mm}" +
            "{2,-20:yyyy-MM-dd HH:mm}{3}", 
            year, daylight.Start, daylight.End, daylight.Delta );
    } 

    static void Main( )
    {
        const string headFmt = "{0,-7}{1,-20}{2,-20}{3}";

        Console.WriteLine(
            "This example of TimeZone.GetDaylightChanges( int ) " +
            "generates the \nfollowing output, which varies " +
            "depending on the time zone in which \nit is run. The " +
            "example creates DaylightTime objects for specified \n" +
            "years and displays the start and end dates and time " +
            "change for \ndaylight saving time.\n" );

        // Write a message explaining that start dates prior to 1986 
        // in the en-US culture may not be correct.
        if( CultureInfo.CurrentCulture.Name == "en-US" )
        {
            Console.WriteLine(
                "Note: In the [en-US] culture, all start dates are " +
                "calculated from \nthe first Sunday in April, " +
                "based on a standard set in 1986. For \ndates " +
                "prior to 1986, the calculated start date may not " +
                "be accurate." );
        }

        Console.WriteLine( "\nLocal time: {0}\n", 
            localZone.StandardName );

        Console.WriteLine( headFmt, "Year", "Start", "End", "Change" );
        Console.WriteLine( headFmt, "----", "-----", "---", "------" );

        CreateDaylightTime( 1960 );
        CreateDaylightTime( 1970 );
        CreateDaylightTime( 1980 );
        CreateDaylightTime( 1990 );
        CreateDaylightTime( 2000 );
        CreateDaylightTime( 2001 );
        CreateDaylightTime( 2002 );
        CreateDaylightTime( 2003 );
        CreateDaylightTime( 2004 );
        CreateDaylightTime( 2005 );
        CreateDaylightTime( 2020 );
        CreateDaylightTime( 2040 );
    } 
} 

/*
This example of TimeZone.GetDaylightChanges( int ) generates the
following output, which varies depending on the time zone in which
it is run. The example creates DaylightTime objects for specified
years and displays the start and end dates and time change for
daylight saving time.

Note: In the [en-US] culture, all start dates are calculated from
the first Sunday in April, based on a standard set in 1986. For
dates prior to 1986, the calculated start date may not be accurate.

Local time: Pacific Standard Time

Year   Start               End                 Change
----   -----               ---                 ------
1960   1960-04-03 02:00    1960-10-30 02:00    01:00:00
1970   1970-04-05 02:00    1970-10-25 02:00    01:00:00
1980   1980-04-06 02:00    1980-10-26 02:00    01:00:00
1990   1990-04-01 02:00    1990-10-28 02:00    01:00:00
2000   2000-04-02 02:00    2000-10-29 02:00    01:00:00
2001   2001-04-01 02:00    2001-10-28 02:00    01:00:00
2002   2002-04-07 02:00    2002-10-27 02:00    01:00:00
2003   2003-04-06 02:00    2003-10-26 02:00    01:00:00
2004   2004-04-04 02:00    2004-10-31 02:00    01:00:00
2005   2005-04-03 02:00    2005-10-30 02:00    01:00:00
2020   2020-04-05 02:00    2020-10-25 02:00    01:00:00
2040   2040-04-01 02:00    2040-10-28 02:00    01:00:00
*/ 
Visual C++
// Example of the TimeZone::GetDaylightChanges( int ) method.
using namespace System;
using namespace System::Globalization;
void CreateDaylightTime( int year, TimeZone^ localZone )
{

   // Create a DaylightTime object for the specified year.
   DaylightTime^ daylight = localZone->GetDaylightChanges( year );

   // Display the start and end dates and the time change.
   Console::WriteLine( "{0,-7}{1,-20:yyyy-MM-dd HH:mm}"
   "{2,-20:yyyy-MM-dd HH:mm}{3}", year, daylight->Start, daylight->End, daylight->Delta );
}

int main()
{
   String^ headFmt = "{0,-7}{1,-20}{2,-20}{3}";

   // Get the local time zone.
   TimeZone^ localZone = TimeZone::CurrentTimeZone;
   Console::WriteLine( "This example of TimeZone::GetDaylightChanges( int ) "
   "generates the \nfollowing output, which varies "
   "depending on the time zone in which \nit is run. The "
   "example creates DaylightTime objects for specified \n"
   "years and displays the start and end dates and time "
   "change for \ndaylight saving time.\n" );

   // Write a message explaining that start dates prior to 1986 
   // in the en-US culture may not be correct.
   // ( CultureInfo::CurrentCulture->Name == S"en-US" ) returns False.
   if ( CultureInfo::CurrentCulture->Name->CompareTo( "en-US" ) == 0 )
   {
      Console::WriteLine( "Note: In the [en-US] culture, all start dates are "
      "calculated from \nthe first Sunday in April, based on "
      "a standard set in 1986. For \ndates prior to 1986, "
      "the calculated start date may not be accurate." );
   }

   Console::WriteLine( "\nLocal time: {0}\n", localZone->StandardName );
   Console::WriteLine( headFmt, "Year", "Start", "End", "Change" );
   Console::WriteLine( headFmt, "----", "-----", "---", "------" );
   CreateDaylightTime( 1960, localZone );
   CreateDaylightTime( 1970, localZone );
   CreateDaylightTime( 1980, localZone );
   CreateDaylightTime( 1990, localZone );
   CreateDaylightTime( 2000, localZone );
   CreateDaylightTime( 2001, localZone );
   CreateDaylightTime( 2002, localZone );
   CreateDaylightTime( 2003, localZone );
   CreateDaylightTime( 2004, localZone );
   CreateDaylightTime( 2005, localZone );
   CreateDaylightTime( 2020, localZone );
   CreateDaylightTime( 2040, localZone );
}

/*
This example of TimeZone::GetDaylightChanges( int ) generates the
following output, which varies depending on the time zone in which
it is run. The example creates DaylightTime objects for specified
years and displays the start and end dates and time change for
daylight saving time.

Note: In the [en-US] culture, all start dates are calculated from
the first Sunday in April, based on a standard set in 1986. For
dates prior to 1986, the calculated start date may not be accurate.

Local time: Pacific Standard Time

Year   Start               End                 Change
----   -----               ---                 ------
1960   1960-04-03 02:00    1960-10-30 02:00    01:00:00
1970   1970-04-05 02:00    1970-10-25 02:00    01:00:00
1980   1980-04-06 02:00    1980-10-26 02:00    01:00:00
1990   1990-04-01 02:00    1990-10-28 02:00    01:00:00
2000   2000-04-02 02:00    2000-10-29 02:00    01:00:00
2001   2001-04-01 02:00    2001-10-28 02:00    01:00:00
2002   2002-04-07 02:00    2002-10-27 02:00    01:00:00
2003   2003-04-06 02:00    2003-10-26 02:00    01:00:00
2004   2004-04-04 02:00    2004-10-31 02:00    01:00:00
2005   2005-04-03 02:00    2005-10-30 02:00    01:00:00
2020   2020-04-05 02:00    2020-10-25 02:00    01:00:00
2040   2040-04-01 02:00    2040-10-28 02:00    01:00:00
*/
System..::.Object
  System.Globalization..::.DaylightTime
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune

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.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0

XNA Framework

Supported in: 3.0, 2.0, 1.0
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
what happend with..      oO_Oo   |   Edit   |   Show History
What happend with countries like Honduras that they have applied DST once in their life? Does this Library handling that?
Tags What's this?: Add a tag
Flag as ContentBug
what if rule changed ...      netCentris   |   Edit   |   Show History
The calculation of daylight time change is correct based on new rule However it did not apply to old rule anymore. eg. year 2004 the daylight time is calculated as between 2004-03-14 02:00 and 2004-11-07 02:00 based on new rule but it should be between 2004-04-04 02:00 2004-10-31 02:00 (in previous document)

Tags What's this?: Add a tag
Flag as ContentBug
Processing
© 2009 Microsoft Corporation. All rights reserved. Terms of Use | Trademarks | Privacy Statement | Site Feedback
Page view tracker