Compartilhar via


TimeZone.ToLocalTime(DateTime) Método

Definição

Retorna a hora local que corresponde a um valor de data e hora especificado.

public:
 virtual DateTime ToLocalTime(DateTime time);
public virtual DateTime ToLocalTime (DateTime time);
abstract member ToLocalTime : DateTime -> DateTime
override this.ToLocalTime : DateTime -> DateTime
Public Overridable Function ToLocalTime (time As DateTime) As DateTime

Parâmetros

time
DateTime

Um horário UTC (Tempo Universal Coordenado).

Retornos

DateTime

Um objeto DateTime cujo valor é a hora local que corresponde a time.

Comentários

A tabela a seguir mostra a relação entre o time parâmetro e o DateTime valor retornado por esse método.

Parâmetro time Comportamento Valor retornado
Uma horaDateTimeKind.Utc utc (tempo universal coordenado). Converte a hora de UTC para a hora local. Um objeto DateTime cujo valor é a hora local que corresponde a time.
Uma hora local (DateTimeKind.Local). Nenhuma conversão necessária. O mesmo DateTime valor representado pelo time parâmetro.
Uma hora não especificada (DateTimeKind.Unspecified). Pressupõe que a hora seja UTC e converta-a de UTC para a hora local. Um objeto DateTime cujo valor é a hora local que corresponde a time.

Se o fuso horário local observar o horário de verão, ToLocalTime aplicará a regra de ajuste atual ao time executar a conversão.

Observação

O ToLocalTime método reconhece apenas a regra de ajuste de horário de verão atual para o fuso horário local. Como resultado, é garantido retornar com precisão a hora local correspondente a um horário UTC específico somente durante o período em que a regra de ajuste mais recente está em vigor. Ele poderá retornar resultados imprecisos se time for um valor histórico de data e hora que estava sujeito a uma regra de ajuste anterior.

O ToLocalTime método corresponde ao método com seu TimeZoneInfo.ConvertTimeFromUtc destinationTimeZone parâmetro definido como TimeZoneInfo.Local. Sempre que possível, use o TimeZoneInfo.ConvertTimeFromUtc método.

Notas aos Herdeiros

Embora não seja necessário, na maioria dos casos as classes derivadas em execução no .NET Framework versão 2.0 devem substituir a implementação padrão desse método. No .NET Framework versões 1.0 e 1.1, o ToLocalTime método chamou o GetUtcOffset(DateTime) método e foi ajustado para o horário de verão ao retornar a hora local. No entanto, a partir do .NET Framework 2.0, o comportamento da implementação padrão depende da Kind propriedade do time parâmetro. Se o valor for Local, esse método retornará time inalterado. Se o valor for Utc ou Unspecified, esse método pressupõe time que seja UTC e o converterá na hora do sistema local sem chamar o GetUtcOffset(DateTime) método.

O código a seguir fornece uma substituição simples da implementação padrão do ToLocalTime método. Nesse código, a internalTimeZone variável representa uma instância privada da TimeZone classe:

public override DateTime ToLocalTime(DateTime time)
{
   if (time.Kind == DateTimeKind.Local)
   {
      return time;
   }
   else if (time.Kind == DateTimeKind.Utc)
   {
      DateTime returnTime = new DateTime(time.Ticks, DateTimeKind.Local);
      returnTime += this.GetUtcOffset(returnTime);
      if (internalTimeZone.IsDaylightSavingTime(returnTime))
         returnTime -= new TimeSpan(1, 0, 0);
      return returnTime;
   }      
   else
   {
      throw new ArgumentException("The source time zone cannot be determined.");
   }      
}

Aplica-se a

Confira também