Comprova instantàniament si un any és de traspàs. Descobreix: És 2024 un any de traspàs? És 2025 un any de traspàs? Utilitza les regles oficials del calendari gregorià. Perfecte per a planificació, programació i validació de dates.
Un any de traspàs afegeix un dia extra —el 29 de febrer— al nostre calendari, allargant l'any fins a 366 dies en lloc dels 365 habituals. Heus aquí per què és important: la Terra triga aproximadament 365,25 dies a orbitar el Sol, no exactament 365. Aquesta diferència de quart de dia s'acumula. Sense anys de traspàs, el nostre calendari es desplaçaria gairebé 24 dies cada segle, acabant per posar l'estiu al desembre.
Les matemàtiques són elegants. Cada quatre anys, recollim aquests quarts de dia (0,25 × 4 = 1) i afegim un dia complet al febrer. Això manté el nostre calendari alineat amb l'òrbita real de la Terra i garanteix que les estacions es mantinguin al seu lloc.
Una verificació ràpida pot marcar una gran diferència quan es programen events amb anys d'antelació, es validen dates històriques o es depuren codis de gestió de dates. Introduïu qualsevol any de quatre xifres i obtindreu una resposta instantània basada en les regles precises definides a l'estàndard del calendari gregorià.
Usar aquesta eina només requereix uns segons:
Provar diversos anys és ràpid, sense necessitat de recarregar la pàgina. L'eina funciona en qualsevol dispositiu: ordinador de sobretaula, tauleta o telèfon.
El verificador valida la seva entrada per garantir resultats precisos:
Quan hi ha algun problema, veurà un missatge d'error específic com "Si us plau, introdueixi un any de 4 dígits" o "L'any ha de ser un número positiu". Això evita errors de càlcul i li guia cap al format d'entrada correcte.
Les regles del calendari gregorià segueixen un sistema de tres nivells. Així és com funciona:
Regla 1: Divisible per 4? És un any de traspàs.
Regla 2: Però espera—divisible per 100? No és un any de traspàs.
Regla 3: Un moment—divisible per 400? SÍ que és un any de traspàs, després de tot.
A la pràctica, això significa:
any mod 400 = 0 → Any de Traspàs (exemple: 2000)any mod 100 = 0 → No és un Any de Traspàs (exemple: 1900)any mod 4 = 0 → Any de Traspàs (exemple: 2024)Per què l'excepció per als anys de segle? Sense ella, corregiríem massa. L'òrbita de la Terra dura 365,2422 dies, no 365,25, així que la regla simple de "cada 4 anys" afegeix massa temps. L'ajustament cada 400 anys ajusta amb precisió el calendari, mantenint-lo exacte dins dels 26 segons per any. Aquesta precisió significa que no caldrà ajustar el calendari durant milers d'anys.
L'algoritme utilitza un arbre de decisió que comprova la divisibilitat en un ordre específic. Aquí és el que passa entre bastidors:
Pas 1: Comprova primer la divisibilitat per 400.
Pas 2: Comprova la divisibilitat per 100.
Pas 3: Comprova la divisibilitat per 4.
L'ordre és important. Si comprovessis la divisibilitat per 100 abans de 400, exclouries incorrectament anys com el 2000. Començar amb la comprovació de 400 captura aquests anys de traspàs de segle especials de manera primerenca, la qual cosa és més precisa i computacionalment eficient.
La majoria de llenguatges de programació utilitzen l'operador mòdul (%) per a comprovacions de divisibilitat. Quan year % n = 0, l'any es divideix uniformement per n sense resta. Aquest operador simple fa que la comprovació d'any de traspàs sigui senzilla d'implementar en qualsevol llenguatge, com veureu als exemples de codi a continuació.
Els resultats aparèixen en llenguatge planer:
L'any es repeteix al missatge perquè sempre sàpigues quin any acabes de comprovar, útil quan es comproven diversos anys seguits. Cap ambigüitat, cap argot tècnic. Només una resposta clara de sí o no que apareix instantàniament.
Aquí és on la verificació d'any de traspàs es torna essencial en escenaris del món real:
En construir aplicacions de calendari, selectors de dates o sistemes de programació, un maneig precís d'anys de traspàs prevé la corrupció de dades. Un error comú: codificar febrer amb 28 dies causa errors quan els usuaris intenten seleccionar el 29 de febrer en un any de traspàs. Durant les proves, els desenvolupadors sovint comproven casos límit com el 2000 (any de traspàs tot i ser divisible per 100) i el 1900 (no és un any de traspàs tot i ser divisible per 4).
Planificadors de casaments i organitzadors de conferències que reserven locals amb anys d'antelació necessiten verificar si el 29 de febrer existeix per a l'any objectiu. Reservar un local per al "29 de febrer de 2025" seria un error costós—2025 no és un any de traspàs. Aquesta eina prevé aquests errors abans de signar contractes.
Els sistemes financers utilitzen convencions de recompte de dies per a càlculs d'interessos, preus de bons i informes fiscals. Aquests càlculs han de tenir en compte els anys de 366 dies versus els de 365 dies. Equivocar-se afecta els interessos acumulats, els calendaris d'amortització de préstecs i el compliment normatiu.
Genealogistes i historiadors que verifiquen registres de naixement, events histórics o dates d'arxiu necessiten confirmar si una data de 29 de febrer és possible. Abans de dedicar hores a rastrejar registres del "29 de febrer de 1900", voldria saber que aquella data mai no va existir—1900 no era un any de traspàs.
Els professors que expliquen regles de divisibilitat, sistemes de calendari o l'astronomia darrere de la mesura del temps, poden usar aquesta eina per a demostracions en directe. Els estudiants veuen immediatament perquè el 2000 és un any de traspàs però el 1900 no ho és, fent que la regla d'excepció sigui concreta en lloc d'abstracta.
Les persones nascudes el 29 de febrer només experimenten el seu aniversari real cada quatre anys. Calcular la seva edat amb precisió—especialment per a propòsits legals com l'elegibilitat per votar o beneficis de jubilació—requereix saber exactament quins anys van incloure el 29 de febrer des del seu naixement.
Si estàs treballant amb dates i calendaris, aquestes eines complementàries et podrien ajudar:
Aconseguir que el nostre calendari coincideixi amb l'òrbita de la Terra ha requerit més de 2.000 anys de refinament.
Juli Cèsar, assessorat per l'astrònom egipci Sosigenes, va introduir el primer sistema sistemàtic d'any de traspàs. Cada quatre anys s'afegiria un dia addicional, amb una mitjana de 365,25 dies per any. Això va ser revolucionari: l'anterior calendari romà s'havia desalineat tant amb les estacions que requeria correccions manuals de manera rutinària.
El sistema julià va funcionar prou bé durant segles. Però hi havia un problema: l'òrbita de la Terra no és exactament de 365,25 dies. És de 365,2422 dies, uns 11 minuts més curts. Aquest petit error s'acumula. En 128 anys, el calendari es desplaça un dia sencer per davant de l'any solar.
Al segle XVI, el calendari julià s'havia desplaçat 10 dies endavant. La Pasqua, calculada basant-se en l'equinocci de primavera, estava ocorrent en dates incorrectes. Això va molestar prou el Papa Gregori XIII com per encarregar una reforma completa del calendari.
La solució, ideada pels astrònoms Aloysius Lilius i Christopher Clavius, va ser elegant:
La reforma gregoriana va ser matemàticament precisa. Sota el sistema julià, hi havia 100 anys de traspàs cada 400 anys. El sistema gregorià redueix això a 97 (eliminant tres anys de segle divisibles per 100 però no per 400).
Això crea un any mitjà de 365,2425 dies (365 + 97/400). Comparat amb el període orbital real de la Terra de 365,2422 dies, una diferència de només 26 segons per any. A aquest ritme, el calendari només es desplaçarà un dia cada 3.300 anys.
Els països catòlics van adoptar el nou calendari immediatament el 1582. Els països protestants i ortodoxos es van negar, veient-ho com una intromissió papal. Gran Bretanya i les seves colònies americanes no van canviar fins al 1752, moment en què van haver de saltar 11 dies (el 2 de setembre va ser seguit pel 14 de setembre). La gent va protestar al carrer, convençuda que el govern els havia "robat" 11 dies de les seves vides.
Rússia no va adoptar el calendari gregorià fins al 1918, després de la Revolució Bolxevic. Per això la "Revolució d'Octubre" va ocórrer al novembre pel còmput gregorià. Grècia va esperar fins al 1923, i Turquia va ser l'últim país important en canviar el 1926.
Avui, el calendari gregorià és l'estàndard civil internacional. Les regles de l'any de traspàs estan codificades a ISO 8601, l'estàndard internacional de data i hora. Cada llenguatge de programació important inclou la lògica d'any de traspàs a les seves biblioteques de gestió de dates, assegurant càlculs consistents a tot el món.
Si esteu implementant la lògica d'any de traspàs a la vostra pròpia aplicació, aquí teniu com fer-ho correctament en diversos llenguatges. Cada exemple segueix el mateix algoritme: primer comproveu la divisibilitat per 400, després per 100, i després per 4, per assegurar que es gestionen correctament casos límit com l'any 2000.
1def is_leap_year(year):
2 """
3 Comprova si un any és de traspàs seguint les regles del calendari gregorià.
4 Retorna True si és de traspàs, False en cas contrari.
5 """
6 if year % 400 == 0:
7 return True
8 elif year % 100 == 0:
9 return False
10 elif year % 4 == 0:
11 return True
12 else:
13 return False
14
15# Exemple d'ús:
16year = 2024
17if is_leap_year(year):
18 print(f"Sí, {year} és un any de traspàs")
19else:
20 print(f"No, {year} no és un any de traspàs")
21
22# Prova amb diversos anys
23test_years = [2000, 1900, 2024, 2023, 1600, 2100]
24for year in test_years:
25 result = "és" if is_leap_year(year) else "no és"
26 print(f"{year} {result} un any de traspàs")
271function isLeapYear(year) {
2 /**
3 * Comprova si un any és de traspàs seguint les regles del calendari gregorià.
4 * Retorna true si és de traspàs, false en cas contrari.
5 */
6 if (year % 400 === 0) {
7 return true;
8 } else if (year % 100 === 0) {
9 return false;
10 } else if (year % 4 === 0) {
11 return true;
12 } else {
13 return false;
14 }
15}
16
17// Versió compacta alternativa
18function isLeapYearCompact(year) {
19 return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
20}
21
22// Exemple d'ús:
23const year = 2024;
24if (isLeapYear(year)) {
25 console.log(`Sí, ${year} és un any de traspàs`);
26} else {
27 console.log(`No, ${year} no és un any de traspàs`);
28}
29
30// Prova amb diversos anys
31const testYears = [2000, 1900, 2024, 2023, 1600, 2100];
32testYears.forEach(year => {
33 const result = isLeapYear(year) ? "és" : "no és";
34 console.log(`${year} ${result} un any de traspàs`);
35});
361public class LeapYearChecker {
2 /**
3 * Comprova si un any és de traspàs seguint les regles del calendari gregorià.
4 * @param year L'any a comprovar
5 * @return true si és de traspàs, false en cas contrari
6 */
7 public static boolean isLeapYear(int year) {
8 if (year % 400 == 0) {
9 return true;
10 } else if (year % 100 == 0) {
11 return false;
12 } else if (year % 4 == 0) {
13 return true;
14 } else {
15 return false;
16 }
17 }
18
19 public static void main(String[] args) {
20 int year = 2024;
21 if (isLeapYear(year)) {
22 System.out.println("Sí, " + year + " és un any de traspàs");
23 } else {
24 System.out.println("No, " + year + " no és un any de traspàs");
25 }
26
27 // Prova amb diversos anys
28 int[] testYears = {2000, 1900, 2024, 2023, 1600, 2100};
29 for (int testYear : testYears) {
30 String result = isLeapYear(testYear) ? "és" : "no és";
31 System.out.println(testYear + " " + result + " un any de traspàs");
32 }
33 }
34}
351' Funció de VBA d'Excel per comprovar anys de traspàs
2Function IsLeapYear(year As Integer) As Boolean
3 ' Comprova si un any és de traspàs seguint les regles del calendari gregorià
4 ' Retorna True si és de traspàs, False en cas contrari
5
6 If year Mod 400 = 0 Then
7 IsLeapYear = True
8 ElseIf year Mod 100 = 0 Then
9 IsLeapYear = False
10 ElseIf year Mod 4 = 0 Then
11 IsLeapYear = True
12 Else
13 IsLeapYear = False
14 End If
15End Function
16
17' Ús en una cel·la d'Excel:
18' =SI(IsLeapYear(A1), "Sí, " & A1 & " és un any de traspàs", "No, " & A1 & " no és un any de traspàs")
191#include <stdio.h>
2#include <stdbool.h>
3
4/**
5 * Comprova si un any és de traspàs seguint les regles del calendari gregorià.
6 * Retorna true si és de traspàs, false en cas contrari.
7 */
8bool is_leap_year(int year) {
9 if (year % 400 == 0) {
10 return true;
11 } else if (year % 100 == 0) {
12 return false;
13 } else if (year % 4 == 0) {
14 return true;
15 } else {
16 return false;
17 }
18}
19
20int main() {
21 int year = 2024;
22
23 if (is_leap_year(year)) {
24 printf("Sí, %d és un any de traspàs\n", year);
25 } else {
26 printf("No, %d no és un any de traspàs\n", year);
27 }
28
29 // Prova amb diversos anys
30 int test_years[] = {2000, 1900, 2024, 2023, 1600, 2100};
31 int num_years = sizeof(test_years) / sizeof(test_years[0]);
32
33 for (int i = 0; i < num_years; i++) {
34 const char *result = is_leap_year(test_years[i]) ? "és" : "no és";
35 printf("%d %s un any de traspàs\n", test_years[i], result);
36 }
37
38 return 0;
39}
40La versió compacta de JavaScript mostra com podeu expressar tota la regla com una única expressió booleana: (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0). Tot i que és concís, l'estructura if-else sovint és més clara per al manteniment i la depuració.
Anem a passar per exemples específics per veure com s'apliquen les regles:
2024 (any de traspàs típic)
2000 (l'any de segle complicat)
1900 (l'any de segle que no ho era)
2023 (any normal sense traspàs)
2100 (any de segle futur)
1600 (any de segle de traspàs històric)
En qualsevol període de 400 anys, hi ha exactament 97 anys de traspàs:
Aquest patró es repeteix per sempre, fent els càlculs del calendari predictibles a través dels segles.
P: És el 2024 un any de traspàs?
Sí. El 2024 és divisible per 4 i no és un any de canvi de segle, per la qual cosa es qualifica com un any de traspàs. El febrer de 2024 va tenir 29 dies.
P: És el 2025 un any de traspàs?
No. El 2025 no és divisible per 4 (2025 ÷ 4 = 506,25), per la qual cosa és un any regular de 365 dies. El febrer de 2025 tindrà només 28 dies.
P: Serà el 2028 un any de traspàs?
Sí. El 2028 segueix el patró estàndard—divisible per 4, no és un any de canvi de segle—convertint-lo en un any de traspàs amb 366 dies.
P: Per què el 2000 va ser un any de traspàs però el 1900 no?
Els anys de canvi de segle segueixen una regla més estricta. Han de ser divisibles per 400 per qualificar com a anys de traspàs. Com que 2000 ÷ 400 = 5 (nombre enter), va ser un any de traspàs. Però 1900 ÷ 400 = 4,75 (no enter), per la qual cosa el 1900 no va ser un any de traspàs. Això sorprèn a moltes persones.
P: Quina és la regla dels anys de traspàs?
Divisible per 4? Any de traspàs. Divisible per 100? No és un any de traspàs. Divisible per 400? Any de traspàs de totes maneres. Les regles s'apliquen en aquest ordre exacte per gestionar correctament els casos límit.
P: Per què necessitem anys de traspàs?
La Terra orbita el Sol en 365,2422 dies, no exactament 365. Sense anys de traspàs, el nostre calendari es desplaçaria 24 dies cada segle. L'estiu acabaria ocorrent a l'hivern. Els anys de traspàs mantenen el calendari sincronitzat amb l'òrbita real de la Terra i preserven les estacions.
P: Amb quina freqüència ocorren els anys de traspàs?
Generalment cada 4 anys, però amb excepcions. En qualsevol període de 400 anys, hi ha exactament 97 anys de traspàs (no 100), gràcies a la regla dels anys de canvi de segle.
P: Serà el 2100 un any de traspàs?
No. Com a any de canvi de segle, el 2100 ha de ser divisible per 400 per qualificar, i no ho és (2100 ÷ 400 = 5,25). El proper any de traspàs de canvi de segle després del 2000 serà el 2400.
P: Què passa si vas néixer el 29 de febrer?
Les persones nascudes en un dia de traspàs (29 de febrer) només tenen el seu aniversari real cada quatre anys. En anys no de traspàs, normalment celebren l'1 de febrer o l'1 de març. Legalment, la majoria de jurisdiccions consideren el 28 de febrer com el seu dia de naixement per a efectes relacionats amb l'edat.
P: Quant de precís és el calendari gregorià?
Extremadament precís. Es desplaça només 26 segons per any—aproximadament un dia cada 3.300 anys. Compara-ho amb el calendari julià, que es desplaçava un dia cada 128 anys.
Descobreix més eines que podrien ser útils per al teu flux de treball