Partager via


TimeZoneInfo.SupportsDaylightSavingTime Property

Microsoft Silverlight will reach end of support after October 2021. Learn more.

Gets a value indicating whether the time zone has any daylight saving time rules.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public ReadOnly Property SupportsDaylightSavingTime As Boolean
public bool SupportsDaylightSavingTime { get; }

Property Value

Type: System.Boolean
true if the time zone supports daylight saving time; otherwise, false.

Remarks

On Windows systems, the value of the SupportsDaylightSavingTime property for the local time zone returned by the TimeZoneInfo.Local property reflects the setting of the Control Panel Date and Time application's checkbox that defines whether the system automatically adjusts for daylight saving time. If it is unchecked, or if no checkbox is displayed for a time zone, the value of this property is false.

Version Notes

XNA Framework

 When this property is used in the XNA Framework, it throws a NotSupportedException exception.

Examples

The following example determines whether the local time zone supports daylight saving time and, if it does, determines whether a particular date and time is ambiguous or invalid. If the time is not ambiguous or invalid, the example displays it and converts it to Coordinated Universal Time (UTC). The output is generated by a system in the U.S. Pacific Standard Time zone.

Module Example
   Public Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
      Dim dateStrings() As String = {"1/1/2009 12:00 AM", "6/15/2008 3:00 PM", _ 
                              "3/9/2008 2:30 AM", "3/9/2008 3:00 AM", _
                              "11/2/2008 1:30 AM", "11/2/2008 2:20 AM"}

      For Each dateString As String In dateStrings
         Dim thisDate As Date
         If DateTime.TryParse(dateString, thisDate) Then
            If (TimeZoneInfo.Local.SupportsDaylightSavingTime)
               If TimeZoneInfo.Local.IsAmbiguousTime(thisDate) Then
                  outputBlock.Text += String.Format("{0} is ambiguous in the {1} zone.", _ 
                                                    thisDate, _
                                                    TimeZoneInfo.Local.StandardName) + vbCrLf
               ElseIf TimeZoneInfo.Local.IsInvalidTime(thisDate) Then
                  outputBlock.Text += String.Format("{0} is invalid in the {1} zone.", _
                                                    thisDate, _
                                                    TimeZoneInfo.Local.StandardName) + vbCrLf
               ElseIf TimeZoneInfo.Local.IsDaylightSavingTime(thisDate) Then
                  outputBlock.Text += String.Format("{0} {1} is {2} UTC.", _ 
                                                    thisDate, _
                                                    TimeZoneInfo.Local.DaylightName, _
                                                    thisDate.ToUniversalTime()) + vbCrLf           
               Else
                  outputBlock.Text += String.Format("{0} {1} is {2} UTC.", _ 
                                                    thisDate, _
                                                    TimeZoneInfo.Local.StandardName, _
                                                    thisDate.ToUniversalTime()) + vbCrLf                  
               End If
            Else
               outputBlock.Text += String.Format("{0} {1} is {2} UTC.", _ 
                                                 thisDate, TimeZoneInfo.Local.StandardName, _
                                                 thisDate.ToUniversalTime()) + vbCrLf                  
            End If
         End If
         outputBlock.Text += vbCrLf         
      Next                           
   End Sub
End Module
' The example displays the following output:
'    1/1/2009 12:00:00 AM Pacific Standard TIme is 1/1/2009 8:00:00 AM UTC.
'    
'    6/15/2008 3:00:00 PM Pacific Daylight Time is 6/15/2008 10:00:00 PM UTC.
'    
'    3/9/2008 2:30:00 AM is invalid in the Pacific Standard Time zone.
'    
'    3/9/2008 3:00:00 AM Pacific Daylight Time is 3/9/2008 10:00:00 AM UTC.
'    
'    11/2/2008 1:30:00 AM is ambiguous in the Pacific Standard Time zone.
'    
'    11/2/2008 2:20:00 AM Pacific Standard TIme is 11/2/2008 10:20:00 AM UTC.
using System;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      string[] dateStrings = {"1/1/2009 12:00 AM", "6/15/2008 3:00 PM", 
                              "3/9/2008 2:30 AM", "3/9/2008 3:00 AM", 
                              "11/2/2008 1:30 AM", "11/2/2008 2:20 AM"};
      foreach (string dateString in dateStrings)
      {
         DateTime date;
         if (DateTime.TryParse(dateString, out date))
         {
            if (TimeZoneInfo.Local.SupportsDaylightSavingTime)
            {
               if (TimeZoneInfo.Local.IsAmbiguousTime(date))
                  outputBlock.Text += string.Format("{0} is ambiguous in the {1} zone.\n", 
                                                    date, TimeZoneInfo.Local.StandardName);
               else if (TimeZoneInfo.Local.IsInvalidTime(date))
                  outputBlock.Text += string.Format("{0} is invalid in the {1} zone.\n", 
                                                    date, TimeZoneInfo.Local.StandardName);
               else if (TimeZoneInfo.Local.IsDaylightSavingTime(date))
                  outputBlock.Text += string.Format("{0} {1} is {2} UTC.\n", 
                                                    date, TimeZoneInfo.Local.DaylightName,
                                                    date.ToUniversalTime());                  
               else
                  outputBlock.Text += string.Format("{0} {1} is {2} UTC.\n", 
                                                    date, TimeZoneInfo.Local.StandardName,
                                                    date.ToUniversalTime());                  
            }
            else
            {
               outputBlock.Text += string.Format("{0} {1} is {2} UTC.\n", 
                                                 date, TimeZoneInfo.Local.StandardName,
                                                 date.ToUniversalTime());                  
            }
         }
         outputBlock.Text += "\n";         
      }                           
   }
}
// The example displays the following output:
//    1/1/2009 12:00:00 AM Pacific Standard TIme is 1/1/2009 8:00:00 AM UTC.
//    
//    6/15/2008 3:00:00 PM Pacific Daylight Time is 6/15/2008 10:00:00 PM UTC.
//    
//    3/9/2008 2:30:00 AM is invalid in the Pacific Standard Time zone.
//    
//    3/9/2008 3:00:00 AM Pacific Daylight Time is 3/9/2008 10:00:00 AM UTC.
//    
//    11/2/2008 1:30:00 AM is ambiguous in the Pacific Standard Time zone.
//    
//    11/2/2008 2:20:00 AM Pacific Standard TIme is 11/2/2008 10:20:00 AM UTC.

Version Information

Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.