Ler em inglês

Compartilhar via


TimeZoneInfo.GetAmbiguousTimeOffsets Método

Definição

Retorna informações sobre as datas e as horas possíveis para as quais uma data e hora ambíguas podem ser mapeadas.

Sobrecargas

GetAmbiguousTimeOffsets(DateTime)

Retorna informações sobre as datas e as horas possíveis para as quais uma data e hora ambíguas podem ser mapeadas.

GetAmbiguousTimeOffsets(DateTimeOffset)

Retorna informações sobre as datas e as horas possíveis para as quais uma data e hora ambíguas podem ser mapeadas.

GetAmbiguousTimeOffsets(DateTime)

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

Retorna informações sobre as datas e as horas possíveis para as quais uma data e hora ambíguas podem ser mapeadas.

public TimeSpan[] GetAmbiguousTimeOffsets (DateTime dateTime);

Parâmetros

dateTime
DateTime

Uma data e hora.

Retornos

Uma matriz de objetos que representa as possíveis Compensações de UTC (Horário Universal Coordenado) para as quais determinadas datas e horas podem ser mapeadas.

Exceções

dateTime não é um horário ambíguo.

Exemplos

O exemplo a seguir define um método chamado ShowPossibleUtcTimes que usa o GetAmbiguousTimeOffsets(DateTime) método para mapear um horário ambíguo para seus possíveis horários UTC (Tempo Universal Coordenado) correspondentes.

private void ShowPossibleUtcTimes(DateTime ambiguousTime, TimeZoneInfo timeZone)
{
   // Determine if time is ambiguous in target time zone
   if (!timeZone.IsAmbiguousTime(ambiguousTime))
   {
      Console.WriteLine("{0} is not ambiguous in time zone {1}.", 
                        ambiguousTime, 
                        timeZone.DisplayName);
   }
   else
   {
      // Display time and its time zone (local, UTC, or indicated by timeZone argument)
      string originalTimeZoneName; 
      if (ambiguousTime.Kind == DateTimeKind.Utc)
         originalTimeZoneName = "UTC";
      else if (ambiguousTime.Kind == DateTimeKind.Local)
         originalTimeZoneName = "local time";
      else
         originalTimeZoneName = timeZone.DisplayName;

      Console.WriteLine("{0} {1} maps to the following possible times:", 
                        ambiguousTime, originalTimeZoneName);
      // Get ambiguous offsets 
      TimeSpan[] offsets = timeZone.GetAmbiguousTimeOffsets(ambiguousTime);
      // Handle times not in time zone of timeZone argument
      // Local time where timeZone is not local zone
      if ((ambiguousTime.Kind == DateTimeKind.Local) && ! timeZone.Equals(TimeZoneInfo.Local)) 
         ambiguousTime = TimeZoneInfo.ConvertTime(ambiguousTime, TimeZoneInfo.Local, timeZone);
      // UTC time where timeZone is not UTC zone   
      else if ((ambiguousTime.Kind == DateTimeKind.Utc) && ! timeZone.Equals(TimeZoneInfo.Utc))
         ambiguousTime = TimeZoneInfo.ConvertTime(ambiguousTime, TimeZoneInfo.Utc, timeZone);

      // Display each offset and its mapping to UTC
      foreach (TimeSpan offset in offsets)
      {
         if (offset.Equals(timeZone.BaseUtcOffset))
            Console.WriteLine("If {0} is {1}, {2} UTC", ambiguousTime, timeZone.StandardName, ambiguousTime - offset);
         else
            Console.WriteLine("If {0} is {1}, {2} UTC", ambiguousTime, timeZone.DaylightName, ambiguousTime - offset);
      }
   }            
}

Em seguida, o método pode ser chamado usando código como o seguinte:

Console.WriteLine();
ShowPossibleUtcTimes(new DateTime(2007, 11, 4, 1, 0, 0), 
                     TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
Console.WriteLine();
ShowPossibleUtcTimes(new DateTime(2007, 11, 4, 01, 00, 00, DateTimeKind.Local), 
                     TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
Console.WriteLine();
ShowPossibleUtcTimes(new DateTime(2007, 11, 4, 00, 00, 00, DateTimeKind.Local), 
                     TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
Console.WriteLine();                     
ShowPossibleUtcTimes(new DateTime(2007, 11, 4, 01, 00, 00, DateTimeKind.Unspecified), 
                     TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
Console.WriteLine();
ShowPossibleUtcTimes(new DateTime(2007, 11, 4, 07, 00, 00, DateTimeKind.Utc), 
                     TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
// 
// This example produces the following output if run in the Pacific time zone:
//
//    11/4/2007 1:00:00 AM (GMT-06:00) Central Time (US & Canada) maps to the following possible times:
//    If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
//    If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
//       
//    11/4/2007 1:00:00 AM Pacific Standard Time is not ambiguous in time zone (GMT-06:00) Central Time (US & Canada).
//     
//    11/4/2007 12:00:00 AM local time maps to the following possible times:
//    If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
//    If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
//    
//    11/4/2007 1:00:00 AM (GMT-06:00) Central Time (US & Canada) maps to the following possible times:
//    If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
//    If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
//       
//    11/4/2007 7:00:00 AM UTC maps to the following possible times:
//    If 11/4/2007 1:00:00 AM is Central Standard Time, 11/4/2007 7:00:00 AM UTC
//    If 11/4/2007 1:00:00 AM is Central Daylight Time, 11/4/2007 6:00:00 AM UTC
//

Comentários

O comportamento preciso desse método depende da relação entre a Kind propriedade e o TimeZoneInfo objeto , como mostra a tabela a seguir.

Tipo de objeto TimeZoneInfo Valor da propriedade do tipo Comportamento
TimeZoneInfo.Local DateTimeKind.Local ou DateTimeKind.Unspecified Retorna deslocamentos de tempo ambíguos para dateTime.
TimeZoneInfo.Local DateTimeKind.Utc dateTime Converte para a hora local e retorna deslocamentos de tempo ambíguos para esse horário.
TimeZoneInfo.Utc Qualquer valor. Lança um ArgumentException.
Outro fuso horário. Local ou DateTimeKind.Utc dateTime Converte no fuso horário especificado e determina se essa hora é ambígua.
Outro fuso horário. DateTimeKind.Unspecified Determina se dateTime é ambíguo no fuso horário especificado.

A ordem dos TimeSpan objetos na matriz retornada por esse método é indefinida. No entanto, você pode determinar qual elemento representa um deslocamento do horário padrão do fuso horário comparando seu valor com a propriedade do BaseUtcOffset fuso horário. Para mapear um horário ambíguo para o horário padrão de um fuso horário, consulte Como resolver horários ambíguos.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

GetAmbiguousTimeOffsets(DateTimeOffset)

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

Retorna informações sobre as datas e as horas possíveis para as quais uma data e hora ambíguas podem ser mapeadas.

public TimeSpan[] GetAmbiguousTimeOffsets (DateTimeOffset dateTimeOffset);

Parâmetros

dateTimeOffset
DateTimeOffset

Uma data e hora.

Retornos

Uma matriz de objetos que representa as possíveis Compensações de UTC (Horário Universal Coordenado) para as quais determinadas datas e horas podem ser mapeadas.

Exceções

dateTimeOffset não é um horário ambíguo.

Comentários

O comportamento preciso desse método depende da relação entre a Offset propriedade do dateTimeOffset parâmetro e o TimeZoneInfo objeto . Se o valor da Offset propriedade corresponder aos possíveis deslocamentos do fuso horário atual do UTC (Tempo Universal Coordenado) para essa data e hora, o método retornará os possíveis deslocamentos. Caso contrário, ele converte dateTimeOffset para a hora no fuso horário atual e retorna os possíveis deslocamentos dessa data e hora.

A ordem dos TimeSpan objetos na matriz retornada por esse método é indefinida. No entanto, você pode determinar qual elemento representa um deslocamento do horário padrão do fuso horário comparando seu valor com a propriedade do BaseUtcOffset fuso horário. Para mapear um horário ambíguo para o horário padrão de um fuso horário, consulte Como resolver horários ambíguos.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0