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.

C#
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.

C#
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:

C#
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 10 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, 10
.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.

C#
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 10 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, 10
.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