Como saber si un año es bisiesto en C#

Esteban Sierra

16 julio, 2025

Introducción

Cuando trabajamos con fechas en programación, uno de los retos más comunes es identificar si un año es bisiesto. Aunque pueda parecer un detalle menor, detectar correctamente un año bisiesto en C# es fundamental en aplicaciones que manejan calendarios, cálculos de fechas o validaciones de entrada de datos.

En este artículo aprenderás:

  • Qué significa que un año sea bisiesto.
  • Cómo comprobarlo fácilmente en C#.
  • Diferentes enfoques de implementación (con librerías y con lógica manual).
  • Errores comunes y cómo evitarlos.
  • Recursos adicionales para seguir profundizando en el lenguaje.

¿Qué es un año bisiesto?

Un año bisiesto es aquel que tiene 366 días en lugar de 365, gracias a la inclusión del 29 de febrero. La regla general es:

  • Todo año divisible entre 4 es bisiesto.
  • Excepto los años divisibles entre 100, que no lo son.
  • Pero los años divisibles entre 400 sí lo son.

Ejemplo:

  • 2000 → bisiesto (divisible entre 400).
  • 1900 → no bisiesto (divisible entre 100 pero no entre 400).
  • 2024 → bisiesto (divisible entre 4 y no entre 100).

Cómo comprobar si un año es bisiesto en C#

En C# tenemos varias formas de saber si un año es bisiesto. Veamos las más comunes.

1. Usando la clase DateTime

El propio framework de .NET nos ofrece un método integrado. Dentro de la clase DateTime tenemos el método IsLeapYear():

using System;

class Program
{
    static void Main()
    {
        int year = 2024;
        bool esBisiesto = DateTime.IsLeapYear(year);

        Console.WriteLine($"{year} es bisiesto: {esBisiesto}");
    }
}

Salida:

2024 es bisiesto: True

👉 Esta es la forma más sencilla y recomendada, ya que aprovecha la librería estándar de .NET, evitando errores de implementación.


2. Implementando la lógica manualmente

Si por algún motivo quieres controlar la lógica, puedes aplicar las reglas matemáticas de un año bisiesto:

using System;

class Program
{
    static void Main()
    {
        int year = 2024;

        bool esBisiesto = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);

        Console.WriteLine($"{year} es bisiesto: {esBisiesto}");
    }
}

Explicación:

  • year % 4 == 0 → divisible entre 4.
  • year % 100 != 0 → no divisible entre 100.
  • year % 400 == 0 → excepción que valida los años múltiplos de 400.

3. Función reutilizable

Si necesitas comprobarlo varias veces en tu proyecto, encapsula la lógica en un método:

public static bool EsBisiesto(int year)
{
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}

Uso:

Console.WriteLine(EsBisiesto(2024)); // True
Console.WriteLine(EsBisiesto(1900)); // False
Console.WriteLine(EsBisiesto(2000)); // True

Errores comunes al comprobar años bisiestos

Aunque la lógica parece simple, hay varios errores típicos que cometen los programadores:

❌ Error 1: Solo comprobar divisibilidad por 4

Mucha gente cree que basta con year % 4 == 0. Esto falla con casos como 1900, que no es bisiesto.

❌ Error 2: Ignorar años seculares (100 y 400)

Si no aplicamos la excepción del 400, caeremos en errores al manejar siglos.

❌ Error 3: No usar DateTime.IsLeapYear cuando está disponible

Reinventar la rueda puede llevar a bugs innecesarios. La librería estándar está optimizada y comprobada.


Ejemplo práctico: Calcular la cantidad de días de un año

Un uso realista de esta validación sería determinar la cantidad de días que tiene un año concreto:

public static int DiasEnUnAño(int year)
{
    return DateTime.IsLeapYear(year) ? 366 : 365;
}

Uso:

Console.WriteLine(DiasEnUnAño(2023)); // 365
Console.WriteLine(DiasEnUnAño(2024)); // 366

Conclusión

Determinar si un año es bisiesto en C# es una tarea sencilla, pero con pequeños matices que pueden llevar a errores si no se aplican correctamente las reglas.

  • La forma más práctica y segura es usar DateTime.IsLeapYear(year).
  • También puedes implementar tu propia lógica si lo necesitas, siempre siguiendo las reglas de divisibilidad.
  • Evita simplificaciones incorrectas, especialmente en años divisibles entre 100.

Con estos ejemplos ya tienes el conocimiento necesario para implementar validaciones de fechas en tus aplicaciones .NET.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies