Saltar al contenido

jdtofrench()

Introducción

El Calendario Revolucionario Francés, también conocido como Calendario Republicano, fue creado durante la Revolución Francesa y se utilizó en Francia desde 1793 hasta 1805. Fue diseñado para reemplazar el calendario gregoriano y se pretendía que fuera más racional y científico. El calendario se basaba en la idea del tiempo decimal y constaba de 12 meses de 30 días cada uno, con 5 o 6 días adicionales añadidos al final del año para compensar los días extra.

El Conteo de Días Juliano, por otro lado, es un sistema de conteo de días utilizado en astronomía. Se define como el número de días transcurridos desde el mediodía del 1 de enero de 4713 a. C. (calendario juliano). PHP incluye una función integrada jdtofrench() en la extensión Calendar para convertir el Conteo de Días Juliano al Calendario Revolucionario Francés, la cual maneja automáticamente las reglas de los años bisiestos del calendario.

Fórmula de Conversión

Para convertir el Conteo de Días Juliano a una fecha del Calendario Revolucionario Francés, utilizamos el siguiente algoritmo:

console
J = JDC - 2375839
N = J mod 365
if N < 360 then
    Q = floor(N / 30) + 1
    R = (N mod 30) + 1
else
    Q = 13
    R = N - 359
end if

Donde:

  • J es el número de días transcurridos desde el inicio del Calendario Revolucionario Francés (22 de septiembre de 1792)
  • N es el número de día en el año actual (0-364)
  • Q es el número de mes (1-12 para los 12 meses, 13 para los días complementarios)
  • R es el número de día en el mes (1-30) o el día complementario (1-5/6)

Explicación de la Fórmula

La fórmula para convertir el Conteo de Días Juliano a una fecha del Calendario Revolucionario Francés es sencilla una vez desglosada. Veamos cada paso.

Paso 1: Calcular J y N

Primero, calcula J restando 2375839 (el Conteo de Días Juliano del 22 de septiembre de 1792, la época del calendario) al Conteo de Días Juliano objetivo. Luego, encuentra N, el número de día dentro del ciclo actual de 365 días:

console
J = JDC - 2375839
N = J mod 365

Paso 2: Calcular Q y R

El calendario revolucionario francés divide el año en 12 meses de exactamente 30 días, seguidos de 5 o 6 días complementarios. Determinamos el mes (Q) y el día (R) utilizando estas reglas:

console
if N < 360 then
    Q = floor(N / 30) + 1
    R = (N mod 30) + 1
else
    Q = 13
    R = N - 359
end if

Si N es menor que 360, la fecha cae dentro de uno de los 12 meses. Dividimos N entre 30 para encontrar el índice del mes y sumamos 1. El resto proporciona el índice del día, también ajustado sumando 1. Si N es 360 o mayor, la fecha cae en el período de días complementarios (Sans-culottides), al cual se le asigna el número de mes 13.

Ejemplo

Conviertamos el Conteo de Días Juliano 2376000 a una fecha del Calendario Revolucionario Francés.

Primero, calcula J y N:

console
J = 2376000 - 2375839 = 161
N = 161 mod 365 = 161

A continuación, calcula Q y R:

console
N < 360, so:
Q = floor(161 / 30) + 1 = 5 + 1 = 6
R = (161 mod 30) + 1 = 11 + 1 = 12

El mes 6 corresponde a Brumario. Por lo tanto, el Conteo de Días Juliano 2376000 corresponde al 12 de Brumario, Año 1 (12 de octubre de 1792).

Implementación en PHP

PHP proporciona una función nativa jdtofrench() en la extensión Calendar, que maneja automáticamente la conversión y la lógica de los años bisiestos:

php
// Requires the Calendar extension
echo jdtofrench(2376000); // Outputs: 12 Brumaire, Year 1

Para fechas anteriores a la época del calendario (22 de septiembre de 1792), debes validar la entrada para evitar resultados inesperados:

php
$jdc = 2376000;
if ($jdc >= 2375839) {
    echo jdtofrench($jdc);
} else {
    echo "Date is before the French Revolutionary Calendar epoch.";
}

Conclusión

En conclusión, PHP proporciona una función integrada jdtofrench() en la extensión Calendar para convertir Conteos de Días Julianos a fechas del Calendario Revolucionario Francés. Al utilizar esta función nativa, puedes traducir con precisión fechas históricas mientras se tienen en cuenta automáticamente las reglas de los años bisiestos y los días complementarios del calendario.

Práctica

¿Qué hace la función jdtofrench() en PHP?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.