Trabajo con fechas y horas en C#: DateTime, TimeSpan y formato

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: Por qué trabajar con fechas en C# es importante



En el desarrollo de software moderno, trabajar con fechas y horas es una de las tareas más frecuentes y críticas. Ya sea para el registro de eventos, el cálculo de plazos, la visualización de noticias o la generación de informes, en todas partes se requiere una gestión precisa y flexible de los datos temporales. C# y la plataforma .NET proporcionan al desarrollador un conjunto de herramientas potente e intuitivo para este propósito.



En este artículo, analizaremos en detalle los tipos principales para trabajar con fechas y horas en C#: DateTime, TimeSpan y DateTimeOffset. Aprenderá a crear, modificar, formatear y comparar fechas, así como a trabajar correctamente con zonas horarias. El material será útil tanto para desarrolladores principiantes como para aquellos con experiencia que deseen sistematizar sus conocimientos.



Tipos de datos principales: DateTime, TimeSpan y DateTimeOffset



1. Estructura DateTime



DateTime es el tipo principal para representar un momento en el tiempo (fecha + hora). Almacena información desde el 1 de enero del año 0001 hasta el 31 de diciembre del año 9999 con una precisión de 100 nanosegundos (ticks).



Creación de un objeto DateTime:

// Fecha y hora actualDateTime now = DateTime.Now;// Fecha y hora actual en UTCDateTime utcNow = DateTime.UtcNow;// Fecha específicaDateTime specificDate = new DateTime(2025, 3, 15);// Fecha y hora con precisión de segundosDateTime specificDateTime = new DateTime(2025, 3, 15, 14, 30, 0);// Fecha de hoy (hora = 00:00:00)DateTime today = DateTime.Today;


2. Estructura TimeSpan



TimeSpan representa un intervalo de tiempo (período). No está vinculado a una fecha específica, sino que almacena una diferencia en el tiempo: días, horas, minutos, segundos y fracciones de segundo.



Creación y uso de TimeSpan:

// Creación de un intervalo: 2 días, 5 horas, 30 minutosTimeSpan interval = new TimeSpan(2, 5, 30, 0);// Intervalo a partir de horasTimeSpan fromHours = TimeSpan.FromHours(48.5);// Diferencia entre dos fechasDateTime start = new DateTime(2025, 1, 1);DateTime end = new DateTime(2025, 3, 15);TimeSpan difference = end - start;Console.WriteLine(difference.Days); // 73


3. Estructura DateTimeOffset



DateTimeOffset es una alternativa más moderna a DateTime que, además de la fecha y la hora, almacena el desplazamiento con respecto a UTC (por ejemplo, +03:00). Esto ayuda a evitar confusiones con las zonas horarias al transferir datos entre sistemas.



// Hora actual con desplazamientoDateTimeOffset localOffset = DateTimeOffset.Now;// Hora en UTC con desplazamiento +00:00DateTimeOffset utcOffset = DateTimeOffset.UtcNow;// Creación especificando el desplazamientoDateTimeOffset specific = new DateTimeOffset(2025, 3, 15, 12, 0, 0, TimeSpan.FromHours(3));


Operaciones principales: suma, resta y comparación



Aritmética con DateTime y TimeSpan



Una de las principales ventajas de C# es la cómoda aritmética de fechas. Puede sumar o restar fácilmente días, meses, años, así como trabajar con horas y minutos.



DateTime today = DateTime.Today;// Sumar 10 díasDateTime futureDate = today.AddDays(10);// Sumar 2 mesesDateTime futureMonth = today.AddMonths(2);// Restar 1 añoDateTime pastYear = today.AddYears(-1);// Sumar 5 horas y 30 minutosDateTime precise = today.AddHours(5).AddMinutes(30);


Trabajo con TimeSpan:

TimeSpan workDay = new TimeSpan(8, 0, 0); // 8 horasTimeSpan breakTime = new TimeSpan(0, 45, 0); // 45 minutosTimeSpan totalWork = workDay + breakTime; // 8 horas 45 minutosTimeSpan remaining = workDay - breakTime; // 7 horas 15 minutos


Comparación de fechas



Para comparar dos momentos en el tiempo se utilizan los operadores de comparación estándar:



Da                

Blogs

Book Recommendations