Leer en inglés

Compartir a través de


DateTime.ToUniversalTime Método

Definición

Convierte el valor del objeto DateTime actual a la hora universal coordinada (UTC).

C#
public DateTime ToUniversalTime();

Devoluciones

Objeto cuya Kind propiedad es Utc, y cuyo valor es el valor UTC equivalente al valor del objeto actual DateTime , o DateTime.MaxValue si el valor convertido es demasiado grande para representarse mediante un DateTime objeto, o DateTime.MinValue si el valor convertido es demasiado pequeño para representarlo un DateTime objeto.

Ejemplos

En el siguiente ejemplo se muestra el ToUniversalTime método.

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.

En el ejemplo siguiente se usa el SpecifyKind método para demostrar cómo influye la Kind propiedad en los ToLocalTime métodos de conversión y ToUniversalTime .

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

*/

Comentarios

La hora universal coordinada (UTC) es igual a la hora local menos el desplazamiento UTC. Para obtener más información sobre el desplazamiento UTC, vea TimeZoneInfo.GetUtcOffset. La conversión también tiene en cuenta la regla de horario de verano que se aplica al tiempo representado por el objeto actual DateTime .

Importante

En los sistemas Windows XP, el ToUniversalTime método reconoce solo la regla de ajuste actual al convertir de hora local a UTC. Como resultado, es posible que las conversiones de períodos antes de que la regla de ajuste actual entre en vigor no reflejen con precisión la diferencia entre la hora local y la HORA UTC.

A partir de la versión 2.0 de .NET Framework, el valor devuelto por el ToUniversalTime método viene determinado por la Kind propiedad del objeto actual DateTime . En la tabla siguiente se describen los posibles resultados.

Tipo Results
Utc No se realiza ninguna conversión.
Local El objeto actual DateTime se convierte en UTC.
Unspecified Se supone que el objeto actual DateTime es una hora local y la conversión se realiza como si Kind fuera Local.

Nota

El ToUniversalTime método convierte un DateTime valor de hora local a UTC. Para convertir la hora en una zona horaria no local a UTC, use el TimeZoneInfo.ConvertTimeToUtc(DateTime, TimeZoneInfo) método . Para convertir una hora cuyo desplazamiento de UTC se conoce, use el ToUniversalTime método .

Si el valor de la instancia de fecha y hora es una hora ambigua, este método supone que es una hora estándar. (Una hora ambigua es una que puede asignarse a una hora estándar o a un horario de verano en la zona horaria local) Si el valor de la instancia de fecha y hora es una hora no válida, este método simplemente resta la hora local del desplazamiento UTC de la zona horaria local para devolver utc. (Una hora no válida es una que no existe debido a la aplicación de reglas de ajuste del horario de verano).

Notas a los autores de las llamadas

El ToUniversalTime() método se usa a veces para convertir una hora local a UTC. A ToLocalTime() continuación, se llama al método para restaurar la hora local original. Sin embargo, si la hora original representa una hora no válida en la zona horaria local, los dos valores de hora local no serán iguales. Para obtener más información y un ejemplo, vea el ToLocalTime() método .

En los sistemas Windows XP, el ToUniversalTime() método reconoce solo la regla de ajuste actual para la zona horaria local, que se aplica a todas las fechas, incluidas las fechas de nivel inferior (es decir, las fechas anteriores a la fecha de inicio de la regla de ajuste actual). Las aplicaciones que se ejecutan en Windows XP que requieren cálculos de fecha y hora locales históricamente precisos deben solucionar este comportamiento mediante el FindSystemTimeZoneById(String) método para recuperar un TimeZoneInfo objeto que corresponda a la zona horaria local y llamar a su ConvertTimeToUtc(DateTime, TimeZoneInfo) método.

En el ejemplo siguiente se muestra la diferencia entre los ToUniversalTime() métodos y ConvertTimeToUtc(DateTime, TimeZoneInfo) en un sistema Windows XP en la zona horaria del Pacífico de EE. UU. Las dos primeras llamadas de método aplican la regla de ajuste de zona horaria actual (que entró en vigor en 2007) a una fecha en 2006. La regla de ajuste actual prevé la transición al horario de verano el segundo domingo de marzo; la regla anterior, que estaba en vigor en 2006, proporcionó la transición al horario de verano para que se produzca el primer domingo de abril. Solo la tercera llamada al método realiza con precisión esta conversión histórica de fecha y hora.

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

Se aplica a

Producto Versiones
.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

Consulte también