Aritmética de fechas
Sume, reste y compare
Aritmética de fechas es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.
Operaciones matemáticas con fechas
Los valores DateTime son inmutables: las operaciones matemáticas nunca cambian el valor original. En su lugar, cada operación devuelve un DateTime completamente nuevo.
En esta lección aprenderá a sumar y restar tiempo, comparar fechas y responder preguntas como cuántos días faltan para un evento.
AddDays
El método AddDays devuelve una fecha que está ese número de días más adelante. Pase un número negativo para retroceder.
Como DateTime es inmutable, debe utilizar el valor devuelto; el original no cambia.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
DateTime later = d.AddDays(10);
Console.WriteLine(later.ToString("yyyy-MM-dd"));
}
}La familia Add
Existe un método Add para cada unidad: AddHours, AddMinutes, AddSeconds, AddMonths y AddYears.
Todos aceptan números positivos o negativos, por lo que un mismo conjunto de métodos sirve tanto para el futuro como para el pasado.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 9, 0, 0);
Console.WriteLine(d.AddHours(5).Hour);
}
}AddMonths gestiona los desbordamientos
AddMonths tiene en cuenta la duración de cada mes. Sumar un mes al 31 de enero da como resultado el 28 o el 29 de febrero, no una fecha no válida.
Así no tiene que comprobar manualmente cuántos días tiene cada mes.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 1, 31);
Console.WriteLine(d.AddMonths(1).ToString("yyyy-MM-dd"));
}
}Retroceder
Para desplazarse al pasado, pase un argumento negativo. AddDays(-7) devuelve la fecha de una semana antes.
No existe un método independiente para restar días; los valores negativos cubren este caso de forma sencilla.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
Console.WriteLine(d.AddDays(-7).ToString("yyyy-MM-dd"));
}
}Sumar un TimeSpan
Puede sumar directamente un TimeSpan a un DateTime con el operador + o mediante el método Add.
Esto resulta práctico cuando ya tiene una duración y quiere desplazar una fecha en función de ella.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 9, 0, 0);
DateTime later = d + TimeSpan.FromHours(3);
Console.WriteLine(later.Hour);
}
}Diferencia entre fechas
Restar una fecha de otra produce un TimeSpan que describe el intervalo entre ambas.
Lea TotalDays para contar los días entre ellas, incluso cuando abarcan varios meses o años.
using System;
class Program
{
static void Main()
{
DateTime start = new DateTime(2024, 1, 1);
DateTime end = new DateTime(2024, 3, 1);
Console.WriteLine((end - start).TotalDays);
}
}Días que faltan para un evento
Una tarea habitual consiste en contar los días que faltan para una fecha futura. Reste la fecha de hoy de la fecha objetivo y lea TotalDays o Days.
Usar fechas fijas aquí mantiene el resultado predecible durante el aprendizaje.
using System;
class Program
{
static void Main()
{
DateTime today = new DateTime(2024, 3, 1);
DateTime party = new DateTime(2024, 3, 15);
Console.WriteLine((party - today).Days);
}
}Comparar fechas
Los valores DateTime se comparan con <, > y ==. Una fecha anterior es menor que una posterior.
También existen métodos como CompareTo y Equals cuando necesita un resultado de comparación formal.
using System;
class Program
{
static void Main()
{
DateTime a = new DateTime(2024, 1, 1);
DateTime b = new DateTime(2024, 6, 1);
Console.WriteLine(a < b);
}
}Años bisiestos y días del mes
Dos métodos auxiliares estáticos responden preguntas sobre el calendario. DateTime.IsLeapYear(year) devuelve true para los años bisiestos.
DateTime.DaysInMonth(year, month) indica cuántos días tiene un mes determinado y gestiona correctamente febrero.
using System;
class Program
{
static void Main()
{
Console.WriteLine(DateTime.IsLeapYear(2024));
Console.WriteLine(DateTime.DaysInMonth(2024, 2));
}
}Inicio y final del día
Para obtener el inicio de un día, use la propiedad Date, que elimina la hora y la establece a medianoche.
Para obtener el último instante de un día, sume un día y reste un tick, o sume 23:59:59. La propiedad Date es el componente básico más sencillo.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 14, 30, 0);
Console.WriteLine(d.Date.ToString("yyyy-MM-dd HH:mm"));
}
}Comprobación rápida
Parte del 31 de enero de 2024 y llama a AddMonths(1). ¿Qué fecha obtiene?
Resumen
Las operaciones matemáticas con DateTime devuelven valores nuevos. Desplace fechas con AddDays, AddMonths y métodos similares; use valores negativos para retroceder.
Reste fechas para obtener un TimeSpan, compárelas con operadores y use IsLeapYear, DaysInMonth y Date para las tareas relacionadas con el calendario.
Preguntas frecuentes
¿La lección «Aritmética de fechas» es gratis?
Sí — el texto completo de «Aritmética de fechas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Aritmética de fechas»?
Sume, reste y compare Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C# Academy?
No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Aritmética de fechas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C# Academy?
Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Crear DateTimes
- Formatear fechas
- TimeSpan y duraciones
- Aritmética de fechas