Поделиться через


TimeZone.ToLocalTime(DateTime) Метод

Определение

Возвращает местное время, соответствующее заданному значению даты и времени.

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

Параметры

time
DateTime

Всеобщее скоординированное время (UTC).

Возвращаемое значение

Объект DateTime, значением которого является местное время, соответствующее значению time.

Комментарии

В следующей таблице показана связь между параметром time и значением, DateTime возвращаемым этим методом.

Параметр time Поведение Возвращаемое значение
Время в формате UTC (DateTimeKind.Utc). Преобразует время из UTC в местное время. Объект DateTime, значением которого является местное время, соответствующее значению time.
Местное время (DateTimeKind.Local). Преобразование не требуется. То же DateTime значение, представленное параметром time .
Неопределенное время (DateTimeKind.Unspecified). Предполагает, что время равно UTC, и преобразует его из UTC в местное время. Объект DateTime, значением которого является местное время, соответствующее значению time.

Если местный часовой пояс указывает летнее время, ToLocalTime при выполнении преобразования применяется текущее правило time корректировки.

Примечание

Метод ToLocalTime распознает только текущее правило корректировки летнего времени для местного часового пояса. В результате гарантированно возвращается точное местное время, соответствующее определенному времени в формате UTC, только в течение периода, в течение которого действует последнее правило корректировки. Он может возвращать неточные результаты, если time является историческим значением даты и времени, которое подчинялось предыдущему правилу корректировки.

Метод ToLocalTime соответствует методу TimeZoneInfo.ConvertTimeFromUtc , его destinationTimeZone параметру присвоено значение TimeZoneInfo.Local. По возможности используйте TimeZoneInfo.ConvertTimeFromUtc метод .

Примечания для тех, кто наследует этот метод

Хотя это необязательно, в большинстве случаев производные классы, работающие в платформа .NET Framework версии 2.0, должны переопределять реализацию этого метода по умолчанию. В платформа .NET Framework версий 1.0 и 1.1 ToLocalTime метод вызывает GetUtcOffset(DateTime) метод и корректируется для летнего времени при возврате местного времени. Однако начиная с платформа .NET Framework 2.0 поведение реализации по умолчанию зависит Kind от свойства time параметра . Если значение равно Local, этот метод возвращает time без изменений. Если его значение равно Utc или Unspecified, этот метод предполагает time значение UTC и преобразует его в локальное системное время без вызова GetUtcOffset(DateTime) метода .

Следующий код предоставляет простое переопределение реализации метода по умолчанию ToLocalTime . В этом коде internalTimeZone переменная представляет частный экземпляр TimeZone класса :

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.");
   }      
}
Public Overrides Function ToLocalTime(time As Date) As Date
   If time.Kind = DateTimeKind.Local Then
      Return time
   ElseIf time.Kind = DateTimeKind.Utc Then
      Dim returnTime As New Date(time.Ticks, DateTimeKind.Local)
      returnTime += me.GetUtcOffset(returnTime)
      if internalTimeZone.IsDaylightSavingTime(returnTime) Then
         returnTime -= New TimeSpan(1, 0, 0)
      End If
      Return returnTime      
   Else
      Throw New ArgumentException("The source time zone cannot be determined.")
   End If      
End Function

Применяется к

См. также раздел