TimeZone.ToLocalTime(DateTime) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca godzinę lokalną odpowiadającą określonej wartości daty i godziny.
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
Parametry
- time
- DateTime
Czas uniwersalny koordynowany (UTC).
Zwraca
DateTime Obiekt, którego wartość jest czasem lokalnym, który odpowiada time
.
Uwagi
W poniższej tabeli przedstawiono relację między parametrem time
a wartością zwróconą DateTime przez tę metodę.
time Parametr |
Zachowanie | Wartość zwracana |
---|---|---|
Koordynowany czas uniwersalny (UTC) (DateTimeKind.Utc). | Konwertuje czas od UTC do czasu lokalnego. | DateTime Obiekt, którego wartość jest czasem lokalnym, który odpowiada time . |
Czas lokalny (DateTimeKind.Local). | Nie ma potrzeby konwersji. | Ta sama DateTime wartość reprezentowana time przez parametr . |
Nieokreślony czas (DateTimeKind.Unspecified). | Założono, że godzina to UTC i konwertuje ją z czasu UTC na czas lokalny. | DateTime Obiekt, którego wartość jest czasem lokalnym, który odpowiada time . |
Jeśli lokalna strefa czasowa obserwuje czas letni, ToLocalTime stosuje bieżącą regułę korekty do time
podczas przeprowadzania konwersji.
Uwaga
Metoda ToLocalTime rozpoznaje tylko bieżącą regułę korekty czasu letniego dla lokalnej strefy czasowej. W związku z tym gwarantowane jest dokładne zwrócenie czasu lokalnego odpowiadającego określonej godzinie UTC tylko w okresie, w którym obowiązywała najnowsza reguła korekty. Może zwracać niedokładne wyniki, jeśli time
jest historyczną wartością daty i godziny, która była objęta poprzednią regułą korekty.
Metoda ToLocalTime odpowiada metodzie TimeZoneInfo.ConvertTimeFromUtc z jej destinationTimeZone
parametrem ustawionym na TimeZoneInfo.Local. Jeśli to możliwe, użyj TimeZoneInfo.ConvertTimeFromUtc metody .
Uwagi dotyczące dziedziczenia
Chociaż nie jest to wymagane, w większości przypadków klasy pochodne działające w ramach .NET Framework w wersji 2.0 powinny zastąpić domyślną implementację tej metody. W .NET Framework w wersjach 1.0 i 1.1 ToLocalTime
metoda nosi nazwę GetUtcOffset(DateTime) metody i dostosowuje się do czasu letniego podczas zwracania czasu lokalnego. Jednak od .NET Framework 2.0 zachowanie implementacji domyślnej zależy od Kind właściwości parametrutime
. Jeśli jej wartość to Local, ta metoda zwraca time
niezmienione wartości. Jeśli jej wartość to Utc lub Unspecified, ta metoda przyjmuje wartość time
UTC i konwertuje ją na lokalny czas systemowy bez wywoływania GetUtcOffset(DateTime) metody.
Poniższy kod zawiera proste zastąpienie domyślnej implementacji ToLocalTime
metody . W tym kodzie zmienna internalTimeZone
reprezentuje prywatne wystąpienie TimeZone
klasy:
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.");
}
}