Auf Englisch lesen

Freigeben über


DateTime.ToUniversalTime Methode

Definition

Konvertiert den Wert des aktuellen DateTime-Objekts in koordinierte Weltzeit (UTC).

C#
public DateTime ToUniversalTime();

Gibt zurück

Ein Objekt, dessen Kind Eigenschaft Utcist und dessen Wert der UTC-Äquivalent zum Wert des aktuellen DateTime Objekts ist, 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 durch ein DateTime Objekt dargestellt zu werden.

Beispiele

Das folgende Beispiel veranschaulicht die ToUniversalTime Methode.

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 koordinierte Weltzeit (UTC) ist gleich der Ortszeit abzüglich des UTC-Offsets. Weitere Informationen zum UTC-Offset finden Sie unter TimeZoneInfo.GetUtcOffset. Bei der Konvertierung wird auch die Sommerzeitregel berücksichtigt, die für die vom aktuellen DateTime Objekt dargestellte Zeit gilt.

Wichtig

Auf Windows XP-Systemen erkennt die ToUniversalTime -Methode nur die aktuelle Anpassungsregel beim Konvertieren von Ortszeit in UTC. Daher spiegeln Konvertierungen für Zeiträume vor dem Inkrafttreten der aktuellen Anpassungsregel möglicherweise nicht genau den Unterschied zwischen Ortszeit und UTC wider.

Ab der .NET Framework Version 2.0 wird der von der ToUniversalTime -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 Es wird keine Konvertierung durchgeführt.
Local Das aktuelle DateTime Objekt wird in UTC konvertiert.
Unspecified Es wird davon ausgegangen, dass es sich bei dem aktuellen DateTime Objekt um eine Ortszeit handelt, und die Konvertierung wird so ausgeführt, als ob KindLocalwäre .

Hinweis

Die ToUniversalTime -Methode konvertiert einen DateTime Wert von Ortszeit in UTC. Verwenden Sie TimeZoneInfo.ConvertTimeToUtc(DateTime, TimeZoneInfo) die -Methode, um die Uhrzeit in einer nicht lokalen Zeitzone in UTC zu konvertieren. Verwenden Sie die ToUniversalTime -Methode, um eine Zeit zu konvertieren, deren Offset von UTC bekannt ist.

Wenn datum und uhrzeit instance Wert eine mehrdeutige Uhrzeit ist, wird bei dieser Methode davon ausgegangen, dass es sich um eine Standardzeit handelt. (Eine mehrdeutige Zeit ist eine Zeit, die entweder einer Standardzeit oder einer Sommerzeit in der lokalen Zeitzone zugeordnet werden kann.) Wenn datum und uhrzeit instance Wert eine ungültige Uhrzeit ist, subtrahiert diese Methode einfach die ortszeit vom UTC-Offset der lokalen Zeitzone, um UTC zurückzugeben. (Eine ungültige Zeit ist eine Zeit, die aufgrund der Anwendung von Sommerzeitanpassungsregeln nicht vorhanden ist.)

Hinweise für Aufrufer

Die ToUniversalTime() -Methode wird manchmal verwendet, um eine Ortszeit in UTC zu konvertieren. Die ToLocalTime() -Methode wird dann aufgerufen, um die ursprüngliche Ortszeit wiederherzustellen. Wenn die ursprüngliche Zeit jedoch eine ungültige Uhrzeit in der lokalen Zeitzone darstellt, sind die beiden Lokalen Zeitwerte nicht gleich. Weitere Informationen und ein Beispiel finden Sie in der ToLocalTime() -Methode.

Auf Windows XP-Systemen erkennt die ToUniversalTime() -Methode nur die aktuelle Anpassungsregel für die lokale Zeitzone, die sie für alle Datumsangaben gilt, einschließlich der Datumsangaben auf niedrigerer Ebene (d. a. Datumsangaben, die vor dem Startdatum der aktuellen Anpassungsregel liegen). Anwendungen unter Windows XP, die historisch genaue lokale Datums- und Uhrzeitberechnungen erfordern, müssen dieses Verhalten umgehen, indem sie die FindSystemTimeZoneById(String) -Methode verwenden, um ein TimeZoneInfo Objekt abzurufen, das der lokalen Zeitzone entspricht, und deren ConvertTimeToUtc(DateTime, TimeZoneInfo) Methode aufrufen.

Im folgenden Beispiel wird der Unterschied zwischen den ToUniversalTime() Methoden und ConvertTimeToUtc(DateTime, TimeZoneInfo) auf einem Windows XP-System in der Us.S. Pacific Zeitzone veranschaulicht. Die ersten beiden Methodenaufrufe wenden die aktuelle Zeitzonenanpassungsregel (die 2007 in Kraft trat) auf ein Datum im Jahr 2006 an. Die aktuelle Anpassungsregel sieht den Übergang zur Sommerzeit am zweiten Sonntag im März vor; die vorherige Regel, die 2006 in Kraft traten, sah vor, dass der Übergang zur Sommerzeit am ersten Sonntag im April erfolgen sollte. Nur der dritte Methodenaufruf führt diese historische Datums- und Uhrzeitkonvertierung genau aus.

C#
using System;

public class Example
{
   public static void Main()
   {
      DateTime date1 = new DateTime(2006, 3, 21, 2, 0, 0);

      Console.WriteLine(date1.ToUniversalTime());
      Console.WriteLine(TimeZoneInfo.ConvertTimeToUtc(date1));

      TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
      Console.WriteLine(TimeZoneInfo.ConvertTimeToUtc(date1, tz));
   }
}
// The example displays the following output on Windows XP systems:
//       3/21/2006 9:00:00 AM
//       3/21/2006 9:00:00 AM
//       3/21/2006 10:00: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