Partilhar via


TimeZoneInfo.IsDaylightSavingTime Método

Definição

Indica se uma data e hora especificadas estão no intervalo de horário de verão do fuso horário do objeto TimeZoneInfo atual.

Sobrecargas

IsDaylightSavingTime(DateTime)

Indica se uma data e hora especificada estão no intervalo de horário de verão do fuso horário do atual objeto TimeZoneInfo.

IsDaylightSavingTime(DateTimeOffset)

Indica se uma data e hora especificada estão no intervalo de horário de verão do fuso horário do atual objeto TimeZoneInfo.

IsDaylightSavingTime(DateTime)

Origem:
TimeZoneInfo.cs
Origem:
TimeZoneInfo.cs
Origem:
TimeZoneInfo.cs

Indica se uma data e hora especificada estão no intervalo de horário de verão do fuso horário do atual objeto TimeZoneInfo.

public:
 bool IsDaylightSavingTime(DateTime dateTime);
public bool IsDaylightSavingTime (DateTime dateTime);
member this.IsDaylightSavingTime : DateTime -> bool
Public Function IsDaylightSavingTime (dateTime As DateTime) As Boolean

Parâmetros

dateTime
DateTime

Um valor de data e hora.

Retornos

true se o parâmetro dateTime for um horário de verão; caso contrário, false.

Exceções

A propriedade Kind do valor dateTime é Local e dateTime é uma hora inválida.

Exemplos

O exemplo a seguir define um método chamado DisplayDateWithTimeZoneName que usa o TimeZoneInfo.IsDaylightSavingTime método para determinar se o nome de horário padrão de um fuso horário ou o nome do horário de verão deve ser exibido.

private void DisplayDateWithTimeZoneName(DateTime date1, TimeZoneInfo timeZone)
{
   Console.WriteLine("The time is {0:t} on {0:d} {1}", 
                     date1, 
                     timeZone.IsDaylightSavingTime(date1) ?
                         timeZone.DaylightName : timeZone.StandardName);   
}
// The example displays output similar to the following:
//    The time is 1:00 AM on 4/2/2006 Pacific Standard Time
let displayDateWithTimeZoneName (date1: DateTime) (timeZone: TimeZoneInfo) =
    printfn $"The time is {date1:t} on {date1:d} {if timeZone.IsDaylightSavingTime date1 then timeZone.DaylightName else timeZone.StandardName}" 
// The example displays output similar to the following:
//    The time is 1:00 AM on 4/2/2006 Pacific Standard Time
Private Sub DisplayDateWithTimeZoneName(date1 As Date, timeZone As TimeZoneInfo)
   Console.WriteLine("The time is {0:t} on {0:d} {1}", _
                     date1, _
                     IIf(timeZone.IsDaylightSavingTime(date1), _
                         timezone.DaylightName, timezone.StandardName))   
End Sub
' The example displays output similar to the following:
'    The time is 1:00 AM on 4/2/2006 Pacific Standard Time

Comentários

O valor retornado de TimeZoneInfo.IsDaylightSavingTime é afetado pela relação entre o fuso horário representado pelo TimeZoneInfo objeto e a Kind propriedade do dateTime parâmetro , como mostra a tabela a seguir.

Objeto TimeZoneInfo Propriedade DateTime.Kind Result
TimeZoneInfo.Local DateTimeKind.Local Determina se dateTime é horário de verão.
TimeZoneInfo.Local DateTimeKind.Utc dateTime Converte de UTC (Tempo Universal Coordenado) em hora local e determina se é horário de verão.
TimeZoneInfo.Local DateTimeKind.Unspecified Pressupõe que dateTime representa a hora local e determina se é horário de verão.
TimeZoneInfo.Utc DateTimeKind.Local, DateTimeKind.Unspecified ou DateTimeKind.Utc Retorna false (UTC não dá suporte ao horário de verão).
Qualquer outro TimeZoneInfo objeto. DateTimeKind.Local Converte a hora local para a hora equivalente do TimeZoneInfo objeto e, em seguida, determina se o último é horário de verão.
Qualquer outro TimeZoneInfo objeto. DateTimeKind.Utc Converte UTC no horário equivalente do TimeZoneInfo objeto e, em seguida, determina se este último é horário de verão.
Qualquer outro TimeZoneInfo objeto. DateTimeKind.Unspecified Determina se dateTime é horário de verão.

Se o fuso horário representado pelo objeto não der suporte ao TimeZoneInfo horário de verão, o método sempre retornará false. Vários fusos horários, incluindo Utc, não observam o horário de verão. Para determinar se um fuso horário dá suporte ao horário de verão, recupere o valor de sua SupportsDaylightSavingTime propriedade.

Se o dateTime parâmetro especificar uma hora ambígua no fuso horário do objeto atual, o TimeZoneInfo.IsDaylightSavingTime método interpretará dateTime como hora padrão e retornará false se sua Kind propriedade for DateTimeKind.Local ou DateTimeKind.Unspecified. Se a Kind propriedade for DateTimeKind.Utc, esse método selecionará o horário ambíguo correto e indicará se é um horário de verão.

Como o TimeZoneInfo.IsDaylightSavingTime(DateTime) método pode retornar false para uma data e hora ambíguas (ou seja, uma data e hora que podem representar uma hora padrão ou um horário de verão em um fuso horário específico), o TimeZoneInfo.IsAmbiguousTime(DateTime) método pode ser emparelhado com o IsDaylightSavingTime(DateTime) método para determinar se uma hora pode ser um horário de verão. Como um horário ambíguo é aquele que pode ser um horário de verão e um horário padrão, o IsAmbiguousTime(DateTime) método pode ser chamado primeiro para determinar se uma data e hora podem ser um horário de verão. Se o método retornar false, o IsDaylightSavingTime(DateTime) método poderá ser chamado para determinar se o DateTime valor é um horário de verão. O exemplo a seguir ilustra essa técnica.

DateTime unclearDate = new DateTime(2007, 11, 4, 1, 30, 0);
// Test if time is ambiguous.
Console.WriteLine("In the {0}, {1} is {2}ambiguous.", 
                  TimeZoneInfo.Local.DisplayName, 
                  unclearDate, 
                  TimeZoneInfo.Local.IsAmbiguousTime(unclearDate) ? "" : "not ");
// Test if time is DST.
Console.WriteLine("In the {0}, {1} is {2}daylight saving time.", 
                  TimeZoneInfo.Local.DisplayName, 
                  unclearDate, 
                  TimeZoneInfo.Local.IsDaylightSavingTime(unclearDate) ? "" : "not ");
Console.WriteLine();    
// Report time as DST if it is either ambiguous or DST.
if (TimeZoneInfo.Local.IsAmbiguousTime(unclearDate) || 
    TimeZoneInfo.Local.IsDaylightSavingTime(unclearDate))
    Console.WriteLine("{0} may be daylight saving time in {1}.", 
                      unclearDate, TimeZoneInfo.Local.DisplayName);  
// The example displays the following output:
//    In the (GMT-08:00) Pacific Time (US & Canada), 11/4/2007 1:30:00 AM is ambiguous.
//    In the (GMT-08:00) Pacific Time (US & Canada), 11/4/2007 1:30:00 AM is not daylight saving time.
//    
//    11/4/2007 1:30:00 AM may be daylight saving time in (GMT-08:00) Pacific Time (US & Canada).
let unclearDate = DateTime(2007, 11, 4, 1, 30, 0)
// Test if time is ambiguous.
printfn $"""In the {TimeZoneInfo.Local.DisplayName}, {unclearDate} is {if TimeZoneInfo.Local.IsAmbiguousTime unclearDate then "" else "not "}ambiguous."""
// Test if time is DST.
printfn $"""In the {TimeZoneInfo.Local.DisplayName}, {unclearDate} is {if TimeZoneInfo.Local.IsDaylightSavingTime unclearDate then "" else "not "}daylight saving time.
"""
// Report time as DST if it is either ambiguous or DST.
if TimeZoneInfo.Local.IsAmbiguousTime unclearDate || TimeZoneInfo.Local.IsDaylightSavingTime unclearDate then
    printfn $"{unclearDate} may be daylight saving time in {TimeZoneInfo.Local.DisplayName}."

// The example displays the following output:
//    In the (GMT-08:00) Pacific Time (US & Canada), 11/4/2007 1:30:00 AM is ambiguous.
//    In the (GMT-08:00) Pacific Time (US & Canada), 11/4/2007 1:30:00 AM is not daylight saving time.
//    
//    11/4/2007 1:30:00 AM may be daylight saving time in (GMT-08:00) Pacific Time (US & Canada).
Dim unclearDate As Date = #11/4/2007 1:30AM#
' Test if time is ambiguous.
Console.WriteLine("In the {0}, {1} is {2}ambiguous.", _ 
                  TimeZoneInfo.Local.DisplayName, _
                  unclearDate, _
                  IIf(TimeZoneInfo.Local.IsAmbiguousTime(unclearDate), "", "not "))
' Test if time is DST.
Console.WriteLine("In the {0}, {1} is {2}daylight saving time.", _ 
                  TimeZoneInfo.Local.DisplayName, _
                  unclearDate, _
                  IIf(TimeZoneInfo.Local.IsDaylightSavingTime(unclearDate), "", "not "))
Console.WriteLine()    
' Report time as DST if it is either ambiguous or DST.
If TimeZoneInfo.Local.IsAmbiguousTime(unclearDate) OrElse _ 
   TimeZoneInfo.Local.IsDaylightSavingTime(unclearDate) Then
    Console.WriteLine("{0} may be daylight saving time in {1}.", _ 
                      unclearDate, TimeZoneInfo.Local.DisplayName)                                           
End If
' The example displays the following output:
'    In the (GMT-08:00) Pacific Time (US & Canada), 11/4/2007 1:30:00 AM is ambiguous.
'    In the (GMT-08:00) Pacific Time (US & Canada), 11/4/2007 1:30:00 AM is not daylight saving time.
'    
'    11/4/2007 1:30:00 AM may be daylight saving time in (GMT-08:00) Pacific Time (US & Canada).

Se o dateTime parâmetro especificar uma hora inválida, a chamada de método gerará um ArgumentException se o valor da dateTime propriedade do Kind parâmetro for DateTimeKind.Local; caso contrário, o método retornará false.

Chame o TimeZoneInfo.IsDaylightSavingTime método para determinar se deve usar o valor de StandardName um fuso horário ou seu DaylightName valor ao exibir o nome do fuso horário. Consulte a seção Exemplo para obter uma ilustração.

Confira também

Aplica-se a

IsDaylightSavingTime(DateTimeOffset)

Origem:
TimeZoneInfo.cs
Origem:
TimeZoneInfo.cs
Origem:
TimeZoneInfo.cs

Indica se uma data e hora especificada estão no intervalo de horário de verão do fuso horário do atual objeto TimeZoneInfo.

public:
 bool IsDaylightSavingTime(DateTimeOffset dateTimeOffset);
public bool IsDaylightSavingTime (DateTimeOffset dateTimeOffset);
member this.IsDaylightSavingTime : DateTimeOffset -> bool
Public Function IsDaylightSavingTime (dateTimeOffset As DateTimeOffset) As Boolean

Parâmetros

dateTimeOffset
DateTimeOffset

Um valor de data e hora.

Retornos

true se o parâmetro dateTimeOffset for um horário de verão; caso contrário, false.

Comentários

O valor retornado de TimeZoneInfo.IsDaylightSavingTime é afetado pela relação entre o fuso horário representado pelo TimeZoneInfo objeto e a Offset propriedade do dateTimeOffset parâmetro . Se dateTimeOffset não corresponder ao deslocamento do fuso horário atual do UTC (Tempo Universal Coordenado), o método converterá essa hora para a hora no fuso horário atual. Em seguida, ele determina se essa data e hora é um horário de verão.

Se o fuso horário representado pelo objeto não der suporte ao TimeZoneInfo horário de verão, o método sempre retornará false. Para determinar se um fuso horário dá suporte ao horário de verão, recupere o valor de sua SupportsDaylightSavingTime propriedade.

Confira também

Aplica-se a