C#Intermedio6 oct 2025

El caso del DateTime que no suma como esperabas

snippet.c#
using System;
class Program {
    static void Main() {
        DateTime fecha = new DateTime(2023, 1, 31);
        DateTime resultado = fecha.AddMonths(1);
        Console.WriteLine(resultado.ToString("yyyy-MM-dd"));
    }
}

¿Qué crees que imprime?

Salida Esperada

2023-02-28

⚠️ Salida Real

2023-03-03

¿Por qué pasa esto?

**¡C# tiene un sentido del humor muy particular con las fechas!** 😅 Cuando sumas un mes al 31 de enero, .NET no te da el 28 de febrero como esperarías. En su lugar: - **AddMonths** intenta mantener el mismo día del mes (día 31) - Pero febrero solo tiene 28 días (o 29 en bisiesto) - En lugar de ajustar al último día válido, **rebota al mes siguiente** - Resultado: 31 de enero + 1 mes = 3 de marzo 🤯 **¿Por qué?** El método está diseñado para "preservar" el día original, incluso si eso significa saltar meses. ¡Usa `DateTime.DaysInMonth` para cálculos seguros!

Conceptos relacionados

datetimeedge-caseapi-design