TimeZone.ToLocalTime(DateTime) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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.");
}
}