TimeZone.ToLocalTime(DateTime) Metoda

Definicja

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

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.");
   }      
}

Dotyczy

Zobacz też