English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# Fecha y hora (DateTime)

C# incluye la estructura DateTime para manejar fechas y horas.

Para usar fechas y horas en C#, utilice la palabra clave new para crear un objeto de la estructura DateTime. A continuación, se crea un objeto DateTime con valores predeterminados.

DateTime dt = new DateTime(); // Asigna el valor predeterminado 01/01/0001 00:00:00

El valor predeterminado y el valor mínimo del objeto DateTime son 0001Año1Mes1Día 00:00:00 (medianoche). El valor máximo puede ser9999Año12Mes31Noche del día11:59:59

Se pueden usar diferentes constructores de la estructura DateTime para asignar un valor inicial a un objeto DateTime.

//Asigna el valor predeterminado 01/01/0001 00:00:00
DateTime dt1 = new DateTime(); 
//Asigna año, mes, día
DateTime dt2 = new DateTime(2015, 12, 31); 
//Asigna año, mes, día, hora, min, segundos
DateTime dt3 = new DateTime(2015, 12, 31, 5, 10, 20);
 
//Asigna año, mes, día, hora, min, segundos, timezone UTC
DateTime dt4 = new DateTime(2015, 12, 31, 5, 10, 2, DateTimeKind.Utc);

En el ejemplo anterior, especificamos el año, mes y día en el constructor. El año puede ser 0001A9999, el mes puede ser1A12, la fecha puede ser1A31Cualquier otro valor establecido fuera de estos rangos causará una excepción en tiempo de ejecución.

DateTime dt = new DateTime(2015, 12, 32); //Lanza una excepción: el día está fuera de rango

Se pueden usar diferentes constructores de DateTime para configurar la fecha, la hora, el huso horario, el calendario y la regionalidad.

Ticks

Ticks es una fecha y hora, a partir de 00:00:00.000 del calendario juliano1Mes1Desde el día10El número de intervalos de 0 nanosegundos representa. A continuación, se inicializa el objeto DateTime con el número de ticks.

DateTime dt = new DateTime(636370000000000000); 
DateTime.MinValue.Ticks;  //Valor mínimo
DateTime.MaxValue.Ticks; // Valor máximo

Campos estáticos de DateTime

La estructura DateTime incluye campos estáticos, propiedades y métodos. A continuación, se muestra un ejemplo de los campos estáticos y propiedades importantes.

DateTime currentDateTime = DateTime.Now;  //Devuelve la fecha y hora actual
DateTime todaysDate = DateTime.Today; // Devuelve la fecha de hoy
DateTime currentDateTimeUTC = DateTime.UtcNow;// Devuelve la fecha y hora UTC actual
DateTime maxDateTimeValue = DateTime.MaxValue; // Devuelve el valor máximo de DateTime
DateTime minDateTimeValue = DateTime.MinValue; // Devuelve el valor mínimo de DateTime

Espacio de tiempo(TimeSpan)

TimeSpan es una estructura que se utiliza para representar el tiempo en días, horas, minutos, segundos y milisegundos.

DateTime dt = new DateTime(2015, 12, 31);
           
TimeSpan ts = new TimeSpan(25,20,55);
 
DateTime newDate = dt.Add(ts);
Console.WriteLine(newDate);//1/1/2016 1:20:55 AM

Restar dos fechas dará como resultado TimeSpan.

DateTime dt1 = new DateTime(2015, 12, 31); 
DateTime dt2 = new DateTime(2016, 2, 2);
TimeSpan result = dt2.Subtract(dt1);//33.00:00:00

Operadores

Sobrecarga de DateTime estructura+,-,==!=,>,<,<=,>= operadores, simplifican la adición, resta y comparación de fechas. Esto nos facilita manejar las fechas.

DateTime dt1 = new DateTime(2015, 12, 20);
DateTime dt2 = new DateTime(2016, 12, 31, 5, 10, 20); 
TimeSpan time = new TimeSpan(10, 5, 25, 50);
Console.WriteLine(dt2 + time); // 1/10/2017mañana10:36:10
Console.WriteLine(dt2 - dt1); //377.05:10:20
Console.WriteLine(dt1 == dt2); //False
Console.WriteLine(dt1 != dt2); //True
Console.WriteLine(dt1 > dt2); //False
Console.WriteLine(dt1 < dt2); //True
Console.WriteLine(dt1 >= dt2); //False
Console.WriteLine(dt1 <= dt2);//True

Convertir DateTime a String

La estructura DateTime contiene los siguientes métodos para convertir fechas y horas a cadenas.

MétodoDescripción
ToString

Convertir el valor DateTime a una cadena con un formato especificado en la zona actual.

ToShortDateString

Convertir el valor DateTime a una cadena de fecha corta en la zona actual (modo M/d/modo yyyy).

ToShortTimeString

Convertir el valor DateTime a una cadena de tiempo corta en la zona actual (modo h: mm: ss).

ToLongDateString

Convertir el valor DateTime a una cadena de fecha larga en la zona actual (modo dddd, MMMM d, yyyy).

ToLongTimeString

Convertir el valor DateTime a una cadena de tiempo larga en la zona actual (modo h:mm:ss tt).

El siguiente ejemplo muestra cómo convertir DateTime a diferentes formatos de cadena.

var dt = DateTime.Now;
Console.WriteLine("Cadena de fecha actual de la cultura: " + dt.ToString("d"));
Console.WriteLine("MM/dd/yyyy Formato: " + dt.ToString("MM/dd/yyyy"));
Console.WriteLine("Formato dddd, dd MMMM yyyy: " + dt.ToString("dddd, dd MMMM yyyy"));
Console.WriteLine("MM/dd/yyyy h:mm tt Formato: " + dt.ToString("MM/dd/yyyy h:mm tt"));
Console.WriteLine("Formato MMMM dd: " + dt.ToString("MMMM dd"));
Console.WriteLine("Formato HH:mm:ss: " + dt.ToString("HH:mm:ss"));
Console.WriteLine("Formato hh:mm tt: " + dt.ToString("hh:mm tt"));
Console.WriteLine("Cadena de fecha corta: " + dt.ToShortDateString());
Console.WriteLine("Cadena de fecha larga: " + dt.ToLongDateString());
Console.WriteLine("Cadena de hora corta: " + dt.ToShortTimeString());
Console.WriteLine("Cadena de hora larga: " + dt.ToLongTimeString());

Convertir la cadena a DateTime

Se pueden usar los métodos Parse (), ParseExact (), TryParse () y TryParseExact () para convertir cadenas de fecha y hora válidas en objetos DateTime.

Si la cadena especificada no es una representación válida de fecha y hora, los métodos Parse () y ParseExact () lanzarán una excepción. Por lo tanto, se recomienda usar los métodos TryParse () o TryParseExact (), porque si la cadena no es válida, devolverán false.

var str = "5/12/2020";
DateTime dt;
            
var isValidDate = DateTime.TryParse(str, out dt);
if(isValidDate)
    Console.WriteLine(dt);
else
    Console.WriteLine($"{str} no es una cadena de fecha válida");