Saber si un año es bisiesto

Me gustaría saber cómo realizar un cálculo para saber si un año es bisiesto.

La FAQ Saber si un año es bisiesto tiene

Pertenece a la categoría:

Pregunta
Me gustaría saber cómo realizar un cálculo para saber si un año es bisiesto.


Respuesta de Miguel Angel Alvarez
Los años divisibles por 4 son bisiestos, pero cada 400 años se deben eliminar 3 bisiestos. Para ello, no son bisiestos los que se dividen por 100, menos los que se dividen por 400, que sí son bisitestos.





Dicho de otro modo, son bisiestos todos los años divisibles por 4, excluyendo los que sean divisibles por 100, pero no los que sean divisibles por 400.





En pseudocódigo se calcularía así:





SI ((año divisible por 4) Y ((año no divisible por 100) O (año divisible por 400))) ENTONCES


    es bisiesto


SINO


    no es bisiesto




En ASP, el código sería el siguiente:







if ((ano mod 4)=0) and ((ano mod 100)<>0 or (ano mod 400)=0) then


...




En Javascript y en lenguajes de sintaxis similar como C, Java o PHP:






if ((ano % 4 == 0) && ((ano % 100 != 0) || (ano % 400 == 0))


...

Complementar la respuestaComplementar la respuesta
Volver al árbol de categoríasVolver al árbol de categorías

Comentarios
Fueron enviados 26 comentarios a la faq
20 comentarios no revisados
6 comentarios revisados:
Por: MARTIN OSUNA BAÑUELOS
24/1/2006
Introduce tu comentario...
HOLA¡

TENGO UNA DUDA DE EL POR QUE EL AÑO 3600 NO ES AÑO BISIESTO. LA REGLA DICE QUE SERÁ UN AÑO BISIESTO AQUEL AÑO QUE SEA DIVISIBLE ENTRE 4, SI ES FIN DE SIGLO DEBERÁ SER DIVISIBLE ENTRE 400 A EXCEPCION DEL AÑO 3600.

¿POR QUÉ EL AÑO 3600 NO ES AÑO BISIESTO, SI ES FIN DE SIGLO Y ES DIVISIBLE ENTRE 400?

GRACIAS POR SU ATENCIÓN

MARTIN OSUNA BAÑUELOS
Por: Ulysses Nafate
25/10/2006
Este codigo lo realice en C++ y esta perfecto, aunque el comentario de que el año 3600 sera no bisiesto es por que en 400 años debe haber 97 años bisiestos, de esa manera el año del calendario gregoriano se mantiene muy parecido al año solar. Así el año gregoriano dura 365 días +1/4-3/400=365,2425 días (más que el año trópico que dura 365,2422 días).

Como el error es de 0,0003 días por año, podría parecer que al cabo de tres mil años se habrá acumulado un día de error. Pero en realidad no sabemos exactamente cuándo llegará el error a un día. La cifra de 365,2422 dias por año trópico no es del todo exacta, porque tanto la duración del año trópico, como la velocidad de rotación de la tierra, van cambiando con los siglos, y de una manera que no es completamente predecible.

Por lo cual existen versiones que indican que ese día se descontará el año 3600, que no será un año bisiesto.

Saludos!
Por: -
12/4/2007
Te falta un paréntesis hommmbreeee
if ((ano%4 == 0) && ((ano%100 != 0) || (ano%400 == 0)))
Por: alejo
26/11/2007
esta es una manera mas sencilla amigos utilizando clases

function mes($ano, $mes){

$ano =2008;
$mes =2;

//Defino Arreglo que contenga todos los meses del año y en la posicion 1 calculo su mod entre//
//año/4, su mod lo igualo con 0, si es cero febrero es 28 de lo contrario febrero es 29(bisiesto)//

$arreglomes = array();
$arreglomes = array(31,28 +($ano % 4 == 0),31,30,31,30,31,31,30,31,30,31);

$pos=1;
echo"$arreglomes[$pos]";//imprimo el resultado

}

espero que les sirva recuerden que el algebra de bool es muy poderosa chaooo
Por: Gonzalo
28/11/2007
Vamos a ver: año bisiesto (según el wikipedia) es aquel que (es divisible por 4 y no lo es por 100) o ( bien si es divisible por 100 y tambien por 400)

con lo que en php quedaría:

if (((ano % 4 == 0) && (ano % 100 != 0)) || ((ano % 100 == 0) && (ano % 400 == 0))) echo "Es año bisiesto <br>";
Por: PedroLosada
20/10/2008
en la opción para C falta un paréntesis al final, lo demás es más que correcto.
if ((ano%4==0) && ((ano%100!=0)||(ano%400==0)))

Volver al árbol de categoríasVolver al árbol de categorías

Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...