Año bisiesto

Año bisiesto

Año bisiesto, adjetivo que deriva del latín bis sextus dies ante calendas martii,(seis días antes del mes de marzo), que correspondía a un día extra intercalado entre el 23 y el 24 de febrero por Julio César. En el calendario gregoriano, calendario hecho por el papa Gregorio XIII, este día extra intercalado viene a ser el 29 de febrero, y se intercala cada cuatro años. El 24 de febrero era el sexto día antes de las calendas (primer día del mes) de marzo. Los romanos no contaban los días del mes del 1 al 31, sino que tomaban 3 fechas de referencia: calendas, nonas e idus. Para contar se incluía el día de referencia (en este caso, el 1 de marzo).1

Razón y definición del año bisiesto

Este día se añade para corregir el desfase que existe entre la duración del año trópico: 365 días 5 h 48 min 45,25 s (365,242190402 días) y el año calendario de 365,000000000 días. Esto requiere que cada cuatro años se corrija el año calendario por una acumulación no contabilizada de aproximadamente 1/4 de día por año que equivale a un día extra.

En el calendario juliano se consideraban bisiestos los años divisibles entre cuatro. Así, el año juliano duraba 365 días + 0,25 = 365,25 días más que el año trópico, que consta de 365,242198 días (365 días 5 h 48 min 45 s 97 décimas). Cada cuatro años.

Según el calendario gregoriano, la regla para los años bisiestos es la siguiente:

Un año es bisiesto si es divisible entre 4, a menos que sea divisible entre 100. Sin embargo, si un año es divisible entre 100 y además es divisible entre 400, también resulta bisiesto. Obviamente, esto elimina los años finiseculares (últimos de cada siglo, que ha de terminar en 00) divisibles sólo entre 4 y entre 100.

Es decir la gran mayoría de los años que sean divisibles entre 4 son bisiestos. No lo son si su divisibilidad es entre 100 (como los años 1700, 1800, 1900 y 2100), a no ser que además sean divisibles entre 400 (como los años 1600, 2000 y 2400). 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 -1/100 +1/400 = 365,2425 días (más que el año trópico, cuya duración es de 365,242198 días).'

Historia del año bisiesto

Transcurría el año 704 a.c., aproximadamente el 49 a. C., cuando el dirigente Julio César llegó a Egipto. Hasta entonces el calendario romano cargaba con siglos de desfases debido a su imprecisión. Entre otras cosas, Julio encontró un excelente calendario en las tierras de la faraona egipcia Cleopatra. Fue entonces cuando delegó a Sosígenes de Alejandría, astrónomo, matemático y filósofo, la tarea de diseñar un nuevo calendario a la altura y exactitud que el imperio necesitaba. Sosígenes entregó a Julio su calendario entre el 48 y el 46 a. C., basado principalmente en el calendario egipcio, pero conservando los nombres de los meses romanos. Este calendario poseía una duración de 365 días y un día adicional inicialmente cada 3 años, para compensar un desfase natural producido por la revolución no sincrónica de la Tierra en torno al Sol.

La compensación de los desfases que tenía acumulados el calendario romano obligó a que el año 46 a.C. se convirtiera en el año más largo de la historia, con 445 días de duración para compensar e iniciar nuevamente de cero. A este inusual año se le llamó "año juliano" o el "año de la confusión".

Ya los egipcios sabían que cada cuatro años la salida helíaca de la estrella Sothis (Sirius) se retrasaba un día, dando inicio al año nuevo. Sin embargo, doscientos años antes, en el concilio de Cánope, cuando pudieron hacer la reforma, los egipcios no la hicieron debido a pugnas entre las castas sacerdotales y la clase política.

Aproximadamente seis siglos antes el rey Numa Pompilio había agregado los meses de januarius y februarius al ya maltratado año romano, y fue a este último, a februarius, al que se sumó el día adicional. Los romanos solían llamar calendas (o kalendas) al primer día de cada mes y contaban hacia atrás los días que hacían falta. El día primero de marzo se llamaba "calendas de marzo" o kalendas martias. En el calendario Gregoriano, utilizado actualmente, el 28 de febrero sería el día anterior a las calendas de marzo y el 27 de febrero sería el 3er día antes de estas calendas (téngase en cuenta que hay que contar tanto las calendas como el propio día) y así sucesivamente, de modo que el 24 de febrero sería el 6º día antes de las calendas de marzo (ante diem sextum kalendas martias). La reforma de Julio César añadió un día tras el 24 de febrero el ante diem bis sextum kalendas martias. Con el tiempo continuó llamándose Bi-sextum o bisiesto, aunque se añadiera el día extra tras el último día de febrero.

Este calendario fue oficial en Roma durante los siguientes siglos, incluso en el Concilio de Nicea se advirtió que había un error de Sosígenes, pero no hicieron nada por corregirlo, hasta 1582, cuando se adoptó el calendario Gregoriano. Estas renovaciones incluyeron un ajuste que sumaba un día adicional cada 4 años y no cada 3 años, como se venía contando.

Medición del tiempo (teniendo en cuenta años bisiestos)

Normalmente, en muchos problemas de Física, Matemática, Astronomía, etcétera, es necesario calcular determinada magnitud de tiempo en años. Sin embargo, en la mayoría de ocasiones en el enunciado se añade una anotación que indica que se considere 1 año por 365 días. Esto se debe a que los años bisiestos pueden alterar bastante el resultado, y es difícil operar teniéndolos en cuenta.

Un caso en el que se aprecia claramente esto es que, aunque parezca que entre el año 549 d.C. y el año 2009 hayan pasado 1.460 años, en realidad han pasado 1.461, ya que, como cada 4 años hay un día más, cada 1.460 se acumulan 365, lo que incrementa el intervalo de tiempo en 1 año. Generalmente, si los años no bisiestos son 1.460, la medición teniendo en cuenta los años bisiestos sería la anterior +1. Si fuera el doble de 1.460 (2.920), +2, y así sucesivamente en todos los múltiplos de 1.460 (salvo naturalmente 0).

Nota: el papa Gregorio XIII, asesorado por el astrónomo jesuita Christopher Clavius, el 24 de febrero de 1582 promulgó la bula Inter gravisimas, en la que establecía que tras el jueves 4 de octubre de 1582 seguiría el viernes 15 de octubre de 1582.

Con la eliminación de estos diez días desaparecía el desfase con el año solar. Para que no volviera a ocurrir, en el nuevo calendario se eliminaron tres años bisiestos cada cuatro siglos. Con lo anterior, el 4 de octubre de 1582 fue el último día del calendario juliano y el 15 de octubre de 1582 constituyó el primer día del calendario gregoriano. Por tal razón no existieron las fechas del 5 al 14 de octubre de dicho año.

Si se usan métodos actuales, el cálculo de fechas anteriores al 15 de octubre de 1582 siempre será erróneo, ya que se deben utilizar exclusivamente en retrospectiva hasta esta fecha y cambiar a cálculo de fechas julianas a partir del 4 de octubre de 1582, sin olvidar estos 10 días inexistentes.

Algoritmo computacional

Un año es bisiesto si es divisible entre 4, excepto si es divisible entre 100 pero no entre 400.

En programación, el algoritmo para calcular si un año es bisiesto es útil para la realización de calendarios.

Considérense las proposiciones o enunciados lógicos siguientes :

  • p: Es divisible entre 4

  • q: Es divisible entre 100

  • r: Es divisible entre 400

La fórmula lógica que se suele usar para establecer si un año es bisiesto es cuando

es verdadera, pero esta otra sería más eficiente.

En pseudocódigo:

Si el año módulo 4 no es 0

entonces no_año_bisiesto

sino si año módulo 100 no es 0

entonces año_bisiesto

sino si el año módulo 400 es 0

entonces es año_bisiesto

sino

no_año_bisiesto

fin de si

En C es:

#include <stdio.h>int main() { int anno; if (anno % 4 == 0 && (anno % 100 != 0 || anno % 400 == 0)){ printf("Si es bisiesto\n"); } else { printf("No es bisiesto\n"); } return 0;}

En Smalltalk es:

isLeapYear: aYearInteger | adjustedYear | adjustedYear := aYearInteger > 0 ifTrue: [aYearInteger] ifFalse: [(aYearInteger + 1) negated]. ^ ((adjustedYear \\ 4 ~= 0) or: [(adjustedYear \\ 100 = 0) and: [adjustedYear \\ 400 ~= 0]]) not.

En Postgresql es:

IF ((anno % 4)=0) AND ((anno % 100)<>0 OR (anno % 400)=0) THEN''' bisiesto:=true; else bisiesto:=false; end if;

En MATLAB es:

a=input('a: '); if rem (a,4)==0 && (rem(a,100)~=0 || rem (a,400)==0) disp('año bisiesto') else disp('año no bisiesto') end

En Lenguaje R es:

añobis <- function(a) { if (a%%4==0 && (a%%100 != 0 || a%%400 == 0)) {'año bisiesto'} else {'año no bisiesto'} }

En Autoit es:

#include <Date.au3> If _DateIsLeapYear(@YEAR) Then MsgBox(4096, "Año Bisiesto", "Este Año es Bisiesto.")Else MsgBox(4096, "Año Bisiesto", "Este Año no es Bisiesto.")EndIf

En Delphi es:

Result := (Año mod 4 = 0) y ((Año mod 100 <> 0) o (Año mod 400 = 0));

En Java es:

public class Year { public static boolean isLeap(int anno) { return (anno%4==0&&(anno%100!=0||anno%400==0)); }}

En PHP es:

function isBisiesto($anno){ return (($anno % 4 == 0) && (($anno % 100 != 0) || ($anno % 400 == 0))) ? true : false;}

En Javascript es:

bisiesto = (año%4==0) && ((año%100!= 0) || (año%400==0));

En PSeInt es:

Proceso bisiesto Definir anno Como Entero; Si anno % 4 = 0 & anno % 100 <> 0 | anno % 400 = 0 Entonces Escribir "Sí es bisiesto"; Sino Escribir "No es bisiesto"; FinSi FinProceso

En LiveCode es:

If ( (anno mod 4 = 0) and ((anno mod 100 <> 0) or (anno mod 400 = 0)) ) then return true else return false end if

En REBOL es:

leapyear: func[year][any[all[0 = remainder year 4 0 <> remainder year 100]0 = remainder year 400]]

En Visual Basic 6 es:

If (Año / 4) = Int(Año / 4) And (Año / 100) <> Int(Año / 100) Or (Año / 400) = Int(Año / 400) Then Print Año Bisiesto Else Print Año No Bisiesto End If

En VB.NET es:

If (Año Mod 4 = 0) And ((Año Mod 100 <> 0) Or (Año Mod 400 = 0)) Then''' Print Año Bisiesto else Print Año No Bisiesto end if

En YHODA es:

MiYear is LeapYear?true:false-

En Bash es:

if [ $[ $anno % 4 ] -eq 0 ] ; then if [ $[ $anno % 100 ] -ne 0 -o $[ $anno % 400 ] -eq 0 ] ; then echo "Año Bisiesto" else echo "Año no Bisiesto" fi else echo "Año No Bisiesto" fi

En Python es:

if (anno % 4 == 0 and not anno % 100 == 0) or anno % 400 == 0: return True else: return False

O en una sola línea:

return anno % 4 == 0 and (not anno % 100 == 0 or anno % 400 == 0)

En Ruby es:

if (year % 4 == 0 and not year % 100 == 0) or year % 400 == 0 return true else return false end

# En versión de línea simple:((year % 4 == 0 and not year % 100 == 0) or year % 400 == 0) ? (true) : (false)

En Scheme es

(define bisiesto (lambda (anio) (if (eqv? (modulo anio 4) 0) (if (eqv? (modulo anio 100) 0) (eqv? (modulo anio 400) 0) #t) #f) ) )

En Pascal es

esBisiesto := (Anio Mod 4 = 0) And ((Anio Mod 100 <> 0) Or (Anio Mod 400 = 0));

En Lua es:

function esBisiesto(a) return a%4==0 and (a%100~=0 or a%400==0)end

En Haskell es

bisiesto::Int->Bool bisiesto a = mod a 4==0 && mod a 100/=0 || mod a 400 ==0

if (nAnno % 4 == 0 and (nAnno % 100 <> 0 or nAnno % 400 == 0)) then nBisiesto=1; //Es bisiesto else nBisiesto=0; //No es bisiesto endif