Auf Englisch lesen

Teilen über


DateTime.ToLocalTime Methode

Definition

Konvertiert den Wert des aktuellen DateTime-Objekts in die Ortszeit.

C#
public DateTime ToLocalTime();

Gibt zurück

Ein Objekt, dessen Kind Eigenschaft ist Localund dessen Wert die lokale Zeit ist, die dem Wert des aktuellen DateTime Objekts entspricht, oder DateTime.MaxValue , wenn der konvertierte Wert zu groß ist, um durch ein DateTime Objekt dargestellt zu werden, oder DateTime.MinValue , wenn der konvertierte Wert zu klein ist, um als DateTime Objekt dargestellt zu werden.

Beispiele

Das folgende Beispiel veranschaulicht die ToLocalTime Methode. Beachten Sie, dass die genaue Ausgabe von der aktuellen Kultur und der lokalen Zeitzone des Systems abhängt, auf dem sie ausgeführt wird.

C#
using System;

class Example
{
    static void Main()
    {
        DateTime localDateTime, univDateTime;
        
        Console.WriteLine("Enter a date and time.");
        string strDateTime = Console.ReadLine();

        try {
            localDateTime = DateTime.Parse(strDateTime);
            univDateTime = localDateTime.ToUniversalTime();

            Console.WriteLine("{0} local time is {1} universal time.",
                                localDateTime,
                                    univDateTime);
        }
        catch (FormatException) {
            Console.WriteLine("Invalid format.");
            return;
        }

        Console.WriteLine("Enter a date and time in universal time.");
        strDateTime = Console.ReadLine();

        try {
            univDateTime = DateTime.Parse(strDateTime);
            localDateTime = univDateTime.ToLocalTime();

            Console.WriteLine("{0} universal time is {1} local time.",
                                     univDateTime,
                                     localDateTime);
        }
        catch (FormatException) {
            Console.WriteLine("Invalid format.");
            return;
        }
    }
}
// The example displays output like the following when run on a
// computer whose culture is en-US in the Pacific Standard Time zone:
//     Enter a date and time.
//     12/10/2015 6:18 AM
//     12/10/2015 6:18:00 AM local time is 12/10/2015 2:18:00 PM universal time.
//     Enter a date and time in universal time.
//     12/20/2015 6:42:00
//     12/20/2015 6:42:00 AM universal time is 12/19/2015 10:42:00 PM local time.

Im folgenden Beispiel wird die SpecifyKind -Methode verwendet, um zu veranschaulichen, wie die Kind -Eigenschaft die ToLocalTime Konvertierungsmethoden und ToUniversalTime beeinflusst.

C#
// This code example demonstrates the DateTime Kind, Now, and
// UtcNow properties, and the SpecifyKind(), ToLocalTime(),
// and ToUniversalTime() methods.

using System;

class Sample
{
    public static void Main()
    {
        // Get the date and time for the current moment, adjusted
        // to the local time zone.

        DateTime saveNow = DateTime.Now;

        // Get the date and time for the current moment expressed
        // as coordinated universal time (UTC).

        DateTime saveUtcNow = DateTime.UtcNow;
        DateTime myDt;

        // Display the value and Kind property of the current moment
        // expressed as UTC and local time.

        DisplayNow("UtcNow: ..........", saveUtcNow);
        DisplayNow("Now: .............", saveNow);
        Console.WriteLine();

        // Change the Kind property of the current moment to
        // DateTimeKind.Utc and display the result.

        myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Utc);
        Display("Utc: .............", myDt);

        // Change the Kind property of the current moment to
        // DateTimeKind.Local and display the result.

        myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Local);
        Display("Local: ...........", myDt);

        // Change the Kind property of the current moment to
        // DateTimeKind.Unspecified and display the result.

        myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Unspecified);
        Display("Unspecified: .....", myDt);
    }

    // Display the value and Kind property of a DateTime structure, the
    // DateTime structure converted to local time, and the DateTime
    // structure converted to universal time.

    public static string datePatt = @"M/d/yyyy hh:mm:ss tt";
    public static void Display(string title, DateTime inputDt)
    {
        DateTime dispDt = inputDt;
        string dtString;

        // Display the original DateTime.

        dtString = dispDt.ToString(datePatt);
        Console.WriteLine("{0} {1}, Kind = {2}",
                          title, dtString, dispDt.Kind);

        // Convert inputDt to local time and display the result.
        // If inputDt.Kind is DateTimeKind.Utc, the conversion is performed.
        // If inputDt.Kind is DateTimeKind.Local, the conversion is not performed.
        // If inputDt.Kind is DateTimeKind.Unspecified, the conversion is
        // performed as if inputDt was universal time.

        dispDt = inputDt.ToLocalTime();
        dtString = dispDt.ToString(datePatt);
        Console.WriteLine("  ToLocalTime:     {0}, Kind = {1}",
                          dtString, dispDt.Kind);

        // Convert inputDt to universal time and display the result.
        // If inputDt.Kind is DateTimeKind.Utc, the conversion is not performed.
        // If inputDt.Kind is DateTimeKind.Local, the conversion is performed.
        // If inputDt.Kind is DateTimeKind.Unspecified, the conversion is
        // performed as if inputDt was local time.

        dispDt = inputDt.ToUniversalTime();
        dtString = dispDt.ToString(datePatt);
        Console.WriteLine("  ToUniversalTime: {0}, Kind = {1}",
                          dtString, dispDt.Kind);
        Console.WriteLine();
    }

    // Display the value and Kind property for DateTime.Now and DateTime.UtcNow.

    public static void DisplayNow(string title, DateTime inputDt)
    {
        string dtString = inputDt.ToString(datePatt);
        Console.WriteLine("{0} {1}, Kind = {2}",
                          title, dtString, inputDt.Kind);
    }
}

/*
This code example produces the following results:

UtcNow: .......... 5/6/2005 09:34:42 PM, Kind = Utc
Now: ............. 5/6/2005 02:34:42 PM, Kind = Local

Utc: ............. 5/6/2005 02:34:42 PM, Kind = Utc
  ToLocalTime:     5/6/2005 07:34:42 AM, Kind = Local
  ToUniversalTime: 5/6/2005 02:34:42 PM, Kind = Utc

Local: ........... 5/6/2005 02:34:42 PM, Kind = Local
  ToLocalTime:     5/6/2005 02:34:42 PM, Kind = Local
  ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc

Unspecified: ..... 5/6/2005 02:34:42 PM, Kind = Unspecified
  ToLocalTime:     5/6/2005 07:34:42 AM, Kind = Local
  ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc

*/

Hinweise

Die Ortszeit entspricht der UTC-Zeit (Koordinierte Weltzeit) und dem UTC-Offset. Weitere Informationen zum UTC-Offset finden Sie unter TimeZoneInfo.GetUtcOffset. Die Konvertierung berücksichtigt auch die Sommerzeitregel, die für die vom aktuellen DateTime Objekt dargestellte Zeit gilt.

Wichtig

Auf Windows XP-Systemen erkennt die ToLocalTime -Methode nur die aktuelle Anpassungsregel beim Konvertieren von UTC in ortszeit. Daher können Konvertierungen für Zeiträume, bevor die aktuelle Anpassungsregel in Kraft getreten ist, möglicherweise nicht genau den Unterschied zwischen UTC und Lokaler Zeit widerspiegeln.

Ab der .NET Framework Version 2.0 wird der von der ToLocalTime -Methode zurückgegebene Wert durch die Kind -Eigenschaft des aktuellen DateTime Objekts bestimmt. In der folgenden Tabelle werden die möglichen Ergebnisse beschrieben.

Art Ergebnisse
Utc Diese instance von DateTime wird in die Ortszeit konvertiert.
Local Es wird keine Konvertierung durchgeführt.
Unspecified Diese instance von DateTime wird als UTC-Zeit angenommen, und die Konvertierung wird so ausgeführt, als ob KindUtcwäre .

Hinweis

Die ToLocalTime -Methode konvertiert einen DateTime Wert von UTC in die Ortszeit. Verwenden Sie die -Methode, um die Zeit in einer beliebigen festgelegten Zeitzone in die TimeZoneInfo.ConvertTime Ortszeit zu konvertieren.

Der von der Konvertierung zurückgegebene Wert ist ein DateTime Wert, dessen Kind Eigenschaft immer zurückgibt Local. Folglich wird ein gültiges Ergebnis zurückgegeben, auch wenn ToLocalTime wiederholt auf dasselbe DateTimeangewendet wird.

Hinweise für Aufrufer

Sie können die ToLocalTime() -Methode verwenden, um einen lokalen Datums- und Uhrzeitwert wiederherzustellen, der von der -Methode oder FromFileTimeUtc(Int64) in UTC ToUniversalTime() konvertiert wurde. Wenn die ursprüngliche Zeit jedoch eine ungültige Zeit in der lokalen Zeitzone darstellt, stimmt sie nicht mit dem wiederhergestellten Wert überein. Wenn die ToLocalTime() Methode eine Zeit von UTC in die lokale Zeitzone konvertiert, passt sie auch die Uhrzeit an, sodass diese in der lokalen Zeitzone gültig ist.

Beispielsweise erfolgt der Übergang von der Standardzeit zur Sommerzeit in der US Pacific Time Zone am 14. März 2010 um 2:00 Uhr, wenn die Zeit um eine Stunde auf 3:00 Uhr a.M. Dieses Stundenintervall ist eine ungültige Zeit, d. h. ein Zeitintervall, das in dieser Zeitzone nicht vorhanden ist. Das folgende Beispiel zeigt, dass der ursprüngliche Wert angepasst wird, wenn eine Zeit, die innerhalb dieses Bereichs liegt, von der ToUniversalTime() -Methode in UTC konvertiert und dann von der ToLocalTime() -Methode wiederhergestellt wird. Sie können bestimmen, ob ein bestimmter Datums- und Uhrzeitwert geändert werden kann, indem Sie ihn an die IsInvalidTime(DateTime) -Methode übergeben, wie das Beispiel veranschaulicht.

C#
using System;

public class Example
{
   public static void Main()
   {
      DateTime date1 = new DateTime(2010, 3, 14, 2, 30, 0, DateTimeKind.Local);
      Console.WriteLine("Invalid time: {0}",
                        TimeZoneInfo.Local.IsInvalidTime(date1));
      DateTime utcDate1 = date1.ToUniversalTime();
      DateTime date2 = utcDate1.ToLocalTime();
      Console.WriteLine("{0} --> {1}", date1, date2);
   }
}
// The example displays the following output:
//       Invalid time: True
//       3/14/2010 2:30:00 AM --> 3/14/2010 3:30:00 AM

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Weitere Informationen