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