Leer en inglés

Compartir vía


DateTime.ToLocalTime Método

Definición

Convierte el valor del objeto DateTime actual a la hora local.

C#
public DateTime ToLocalTime();

Devoluciones

Objeto cuya Kind propiedad es Local, y cuyo valor es la hora local 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 representarse como un DateTime objeto.

Ejemplos

En el siguiente ejemplo se muestra el ToLocalTime método. Tenga en cuenta que la salida exacta depende de la referencia cultural actual y de la zona horaria local del sistema en la que se ejecuta.

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 local es igual a la hora universal coordinada (UTC) más 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 a la hora representada por el objeto actual DateTime .

Importante

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

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

Tipo Results
Utc Esta instancia de DateTime se convierte en hora local.
Local No se realiza ninguna conversión.
Unspecified Se supone que esta instancia de DateTime es una hora UTC y la conversión se realiza como si Kind fuera Utc.

Nota

El ToLocalTime método convierte un DateTime valor de UTC a hora local. Para convertir la hora en cualquier zona horaria designada a la hora local, use el TimeZoneInfo.ConvertTime método .

El valor devuelto por la conversión es un DateTime cuya Kind propiedad siempre devuelve Local. Por lo tanto, se devuelve un resultado válido incluso si ToLocalTime se aplica repetidamente al mismo DateTime.

Notas a los autores de las llamadas

Puede usar el ToLocalTime() método para restaurar un valor de fecha y hora local convertido a UTC por el ToUniversalTime() método o FromFileTimeUtc(Int64) . Sin embargo, si la hora original representa una hora no válida en la zona horaria local, no coincidirá con el valor restaurado. Cuando el ToLocalTime() método convierte una hora de UTC a la zona horaria local, también ajusta la hora para que sea válida en la zona horaria local.

Por ejemplo, la transición del horario estándar al horario de verano se produce en la zona horaria del Pacífico de EE. UU. el 14 de marzo de 2010, a las 2:00 a.m., cuando la hora avanza por una hora, a las 3:00 a.m. Este intervalo de hora es una hora no válida, es decir, un intervalo de tiempo que no existe en esta zona horaria. En el ToUniversalTime() ejemplo siguiente se muestra que cuando el método convierte una hora que se encuentra dentro de este intervalo a utc y, a continuación, se restaura mediante el ToLocalTime() método , el valor original se ajusta para convertirse en una hora válida. Puede determinar si un valor de fecha y hora determinado puede estar sujeto a modificación pasandolo al IsInvalidTime(DateTime) método , como se muestra en el ejemplo.

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

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