Metodología de fecha y hora — Calendarios, días de la semana y normas ISO | MrCalculators

Metodología de fecha y hora

Nuestras herramientas de fecha y hora se apoyan en el calendario gregoriano proléptico, la regla de día de la semana de Zeller e ISO 8601 para la representación y la numeración de semanas. Esta página documenta las fórmulas que aplicamos, los estándares que seguimos y los casos especiales (días bisiestos, segundos intercalares, transiciones del horario de verano, convenciones locales sobre el día de la semana) que tratamos de forma explícita para que los resultados sigan siendo reproducibles y verificables.

Fórmulas y reglas que usamos

Regla del año bisiesto gregoriano

Un año es bisiesto si es divisible por 4, salvo los años seculares, que además deben ser divisibles por 400. Así que 2000 es bisiesto, pero 1900 y 2100 no lo son. Aplicamos esta regla de forma proléptica, es decir, la extendemos hacia atrás antes de 1582 para mantener la coherencia aritmética en rangos de fechas amplios.

Congruencia de Zeller para el día de la semana

Para asignar un día de la semana a una fecha gregoriana sin iterar usamos la congruencia de Zeller: h = (q + floor(13(m+1)/5) + K + floor(K/4) + floor(J/4) + 5J) mod 7, tratando enero y febrero como los meses 13 y 14 del año anterior. La salida se normaliza después a la numeración ISO de días de la semana, en la que el lunes es 1 y el domingo es 7.

Formato de fecha ISO 8601

Mostramos las fechas canónicas como AAAA-MM-DD y las fechas-hora combinadas como AAAA-MM-DDTHH:MM:SS con un desplazamiento explícito (Z para UTC, ±HH:MM en otro caso). Este formato no es ambiguo entre locales, se ordena lexicográficamente en orden cronológico y coincide con el formato que la mayoría de APIs y bases de datos almacenan de forma nativa.

Recuento de días hábiles

Los días hábiles excluyen sábado y domingo. Dejamos que el usuario excluya, opcionalmente, una lista de festivos, que se aplica después de filtrar el fin de semana. Para rangos que cruzan meses o años contamos iterando semanas completas más un resto, de modo que los rangos muy largos siguen siendo O(1) por cálculo en lugar de recorrer día a día.

Numeración de semanas ISO

Las semanas ISO empiezan en lunes y la semana 1 del año es la que contiene el primer jueves (equivalentemente, la que contiene el 4 de enero). Los años tienen, por tanto, 52 o 53 semanas ISO, y los primeros o últimos días de un año gregoriano pueden pertenecer al año-semana ISO adyacente. Etiquetamos esas fechas como AAAA-Sss-D usando el año-semana ISO, no el año natural.

UTC y política de segundos intercalares

Todos los instantes se almacenan como UTC. El BIPM mantiene UTC en cooperación con los laboratorios nacionales de tiempo, y el IERS anuncia los segundos intercalares mediante el Boletín C cuando son necesarios para mantener UTC dentro de los 0,9 segundos de UT1. Nuestras operaciones de duración asumen 86 400 segundos SI por día y no insertan segundos intercalares, lo que coincide con el comportamiento del tiempo POSIX y de la mayoría de sistemas operativos.

Cómo revisamos y actualizamos

La lógica de calendario está cubierta por pruebas unitarias que incluyen años bisiestos (1900, 2000, 2024), límites de año-semana ISO (del 29 de diciembre al 3 de enero) y días de transición del horario de verano en ambos hemisferios. Cuando el IERS anuncia un nuevo segundo intercalar, actualizamos la documentación interna pero dejamos la aritmética UTC sin cambios, porque las expectativas de los usuarios sobre días y horas transcurridos coinciden con el modelo POSIX. Volvemos a revisar esta página de metodología tras cada modificación de ISO 8601 y, como mínimo, una vez al año natural.

Errores habituales

  • Gestión de los segundos intercalares. Un segundo intercalar añade un 23:59:60 UTC al último día de junio o diciembre cuando se inserta. Como nuestra aritmética de duraciones trata cada día como 86 400 segundos (al estilo POSIX), las diferencias que cruzan un día con segundo intercalar quedarán desfasadas en un segundo respecto al recuento real de segundos SI. Para la planificación cotidiana esto es invisible; para temporización científica por debajo del segundo conviene consultar una fuente de tiempo consciente del IERS.
  • Numeración de semanas ISO frente a la estadounidense. La semana 1 ISO es la del primer jueves y las semanas empiezan en lunes. La convención estadounidense suele considerar la semana 1 como la que contiene el 1 de enero y comienza la semana en domingo. Estos dos sistemas suelen diferir en una semana en enero y diciembre, así que comprueba siempre qué numeración usa un informe antes de comparar valores.
  • Días de transición del horario de verano. El día del cambio al horario de verano un día local tiene 23 horas; el del cambio al horario de invierno, 25. Los cálculos hechos en hora local pueden, por tanto, producir un error de una hora, y una marca temporal como las 02:30 del día del cambio al horario de invierno es ambigua. Lo evitamos haciendo toda la aritmética en UTC y convirtiendo a hora local sólo al mostrar.
  • Día de la semana según locale frente a ISO. La numeración ISO sitúa al lunes como 1 y al domingo como 7. Muchos locales y los valores por defecto de las hojas de cálculo numeran el domingo como 1 y el sábado como 7. Mezclar ambas al construir fórmulas (por ejemplo, en recuentos de días hábiles) desplaza los resultados un día sin previo aviso, así que siempre indicamos qué numeración esperamos en la entrada.
  • Gregoriano proléptico para fechas históricas. Antes de 1582 en la mayor parte de Europa (y más tarde en algunos países) se usaba el calendario juliano. Nuestras herramientas extienden la regla gregoriana hacia atrás para mantener la coherencia aritmética, lo que significa que una fecha 'histórica' que introduzcas no coincidirá con la registrada en los documentos de la época. Trata los resultados anteriores a 1582 como una convención matemática, no como una afirmación histórica.

Glosario

UTC
Tiempo Universal Coordinado, el estándar de tiempo principal, mantenido por el BIPM en colaboración con los laboratorios nacionales de tiempo.
UT1
Escala de tiempo basada en el ángulo de rotación de la Tierra. UTC se mantiene dentro de los 0,9 segundos de UT1 mediante segundos intercalares.
Segundo intercalar
Segundo adicional insertado en UTC, anunciado por el Boletín C del IERS, para mantener UTC alineado con UT1.
Año bisiesto
Año gregoriano de 366 días. Divisible por 4, salvo que los años seculares también deben ser divisibles por 400.
ISO 8601
Estándar internacional para representar fechas, horas, duraciones e intervalos de forma neutra respecto al locale.
Fecha de semana ISO
Formato AAAA-Sss-D en el que la semana 1 es la que contiene el primer jueves y el lunes es el día 1.
Año-semana
Año al que pertenece una determinada semana ISO. Puede no coincidir con el año gregoriano cerca del 1 de enero o del 31 de diciembre.
Calendario gregoriano proléptico
Calendario gregoriano extendido hacia atrás antes de su adopción en 1582, usado por coherencia aritmética.
Calendario juliano
Calendario de uso común en Europa antes de 1582, con una regla de año bisiesto más simple (cada cuatro años).
Congruencia de Zeller
Expresión aritmética cerrada que devuelve el día de la semana de cualquier fecha gregoriana sin iterar.
Tiempo POSIX
Segundos transcurridos desde 1970-01-01T00:00:00Z, ignorando los segundos intercalares. Es la base de la mayoría de relojes de sistema operativo.
Horario de verano (DST)
Convención de hora local que adelanta los relojes una hora durante parte del año, produciendo días locales de 23 y 25 horas en las transiciones.
Desplazamiento horario
Diferencia con signo entre una hora local y UTC, escrita como ±HH:MM (por ejemplo, +01:00 para España peninsular en horario de invierno).
BIPM
Bureau International des Poids et Mesures, organismo intergubernamental que mantiene UTC y el segundo SI.
IERS
International Earth Rotation and Reference Systems Service, que vigila la rotación de la Tierra y anuncia los segundos intercalares.