Trabajo con fechas y horas en C#: guía completa

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 al trabajo con fechas y horas en C#



Trabajar con fechas y horas es una de las tareas fundamentales en el desarrollo de software. Ya sea para registro de eventos, cálculo de plazos, creación de informes o trabajo con bases de datos, saber gestionar correctamente los datos temporales es críticamente importante. En C# (plataforma .NET), existe un conjunto de herramientas potente y flexible para estos fines, que incluye las estructuras DateTime, TimeSpan y DateTimeOffset.



En este artículo, analizaremos en detalle todos los aspectos clave del trabajo con fechas y horas en C#. Aprenderá a crear, formatear, comparar y manipular datos temporales, además de conocer las mejores prácticas que le ayudarán a evitar errores comunes.



Estructuras principales: DateTime, TimeSpan y DateTimeOffset



Estructura DateTime



DateTime es la estructura principal para representar un momento en el tiempo (fecha + hora). Puede representar valores desde el 01.01.0001 hasta el 31.12.9999.



Creación de un objeto DateTime:



// Fecha y hora actualesDateTime now = DateTime.Now;DateTime utcNow = DateTime.UtcNow;

// Fecha y hora específicasDateTime specificDate = new DateTime(2025, 3, 15, 14, 30, 0); // 15 de marzo de 2025, 14:30:00

// Análisis desde una cadenaDateTime parsedDate = DateTime.Parse("2025-03-15");

// Uso de TryParse para un análisis seguroif (DateTime.TryParse("2025-03-15", out DateTime result)){ Console.WriteLine($"Analizado exitosamente: {result}");}


Propiedades y métodos principales:



  • Date — devuelve solo la fecha (hora = 00:00:00)
  • Year, Month, Day, Hour, Minute, Second — componentes individuales
  • DayOfWeek — día de la semana (enum)
  • AddDays(), AddMonths(), AddYears() — aritmética con fechas
  • AddHours(), AddMinutes(), AddSeconds() — aritmética con horas


Estructura TimeSpan



TimeSpan representa un intervalo de tiempo (período entre dos momentos). No es una fecha, sino una duración.



// Creación de TimeSpanTimeSpan interval = new TimeSpan(2, 15, 30); // 2 horas, 15 minutos, 30 segundos

// Diferencia entre dos fechasDateTime start = new DateTime(2025, 1, 1);DateTime end = new DateTime(2025, 1, 10);TimeSpan difference = end - start; // 9 días

// Propiedades de TimeSpanConsole.WriteLine($"Días: {difference.Days}"); // 9Console.WriteLine($"Total de horas: {difference.TotalHours}"); // 216Console.WriteLine($"Total de minutos: {difference.TotalMinutes}"); // 12960

// Aritmética con TimeSpanTimeSpan workDay = new TimeSpan(8, 0, 0); // 8 horasTimeSpan breakTime = new TimeSpan(1, 0, 0); // 1 horaTimeSpan actualWork = workDay - breakTime; // 7 horas


Estructura DateTimeOffset



DateTimeOffset es una versión mejorada de DateTime que tiene en cuenta el desplazamiento respecto a UTC. Esto es críticamente importante para aplicaciones que trabajan con usuarios de diferentes zonas horarias.



// Hora actual teniendo en cuenta la zona horariaDateTimeOffset nowOffset = DateTimeOffset.Now;

// Creación especificando el desplazamientoDateTimeOffset withOffset = new DateTimeOffset(2025, 3, 15, 14, 0, 0, TimeSpan.FromHours(3));

// Conversión entre zonas horariasDateTimeOffset utc = withOffset.ToUniversalTime();DateTimeOffset local = withOffset.ToLocalTime();

// Obtención del desplazamientoConsole.WriteLine($"Desplazamiento: {withOffset.Offset}"); // +03:00


¿Cuándo usar DateTimeOffset en lugar de DateTime? Si su aplicación trabaja con usuarios de diferentes zonas horarias o almacena datos en UTC, use DateTimeOffset. Esto previene

Blogs

Book Recommendations