W3docs

frenchtojd()

Aprende a usar frenchtojd() en PHP para convertir fechas del calendario republicano francés a Julian Day Count con ejemplos y casos comunes.

Introducción

La función frenchtojd() de PHP convierte una fecha del calendario republicano francés en un Julian Day Count — un entero único que identifica un día del calendario. Esta página explica qué significan estos dos términos, cómo llamar a la función, qué significan sus valores de retorno y los casos especiales que pueden generar errores.

Un Julian Day Count (JDC) es el recuento continuo de días desde el inicio del período juliano: el mediodía UTC del 1 de enero de 4713 a.C. Al ser un entero simple, es el formato "pivote" común que PHP usa para convertir entre calendarios: se convierte el calendario A a un día juliano y luego ese día juliano se convierte al calendario B. También es ampliamente utilizado en astronomía y cualquier campo que necesite una medición del tiempo continua e independiente del calendario.

El calendario republicano francés fue utilizado en Francia desde 1793 hasta 1805, introducido por la Revolución Francesa para reemplazar el calendario gregoriano. Tiene 12 meses de 30 días cada uno, divididos en tres semanas de diez días (décadas), más 5 o 6 "días complementarios" adicionales al final del año. Los años se cuentan desde la fundación de la República (Año I, Año II, …), escritos convencionalmente con números romanos.

Uso de la función integrada frenchtojd() de PHP

Para convertir una fecha del calendario republicano francés a un día juliano en PHP, llama a la función nativa frenchtojd(). PHP gestiona los cálculos del calendario internamente, por lo que no es necesario implementar el algoritmo por tu cuenta.

Nota: Esta función requiere que la extensión calendar esté habilitada. Verifica con extension_loaded('calendar'); si devuelve false, habilita la extensión en tu php.ini.

<?php

$jd = frenchtojd($month, $day, $year);

?>

La función acepta tres parámetros enteros y devuelve un int:

  • $month: El número de mes (1–13). Los meses 1–12 son los meses regulares de 30 días (Vendémiaire … Fructidor); el mes 13 contiene los días complementarios.
  • $day: El día del mes (1–30 para los meses 1–12, 1–6 para el mes 13).
  • $year: El año de la República Francesa, por ejemplo 1 para el Año I.

El rango válido es aproximadamente desde el 1 Vendémiaire del Año 1 hasta el final del Año 14. Cualquier fecha fuera del rango admitido — incluida frenchtojd(0, 0, 0) — devuelve 0. Siempre verifica si el resultado es 0 antes de usar el valor.

Ejemplo de uso

Pasa el mes, el día y el año de la fecha francesa como parámetros:

<?php

$jd = frenchtojd(12, 22, 1);
echo $jd; // Output: 2376191

?>

Aquí convertimos 22 Fructidor, Año I (mes 12, día 22, año 1) a su recuento de días julianos, 2376191. Ese día juliano corresponde al 8 de septiembre de 1793 en el calendario gregoriano.

Conversión a otros calendarios

Dado que el resultado es un día juliano, puedes pasarlo a cualquier función jdto*() para expresar el mismo día en otro calendario. Esta es la razón más común para llamar a frenchtojd():

<?php

$jd = frenchtojd(12, 22, 1);     // 22 Fructidor, Year I → 2376191

echo jdtogregorian($jd), "\n";   // Output: 9/8/1793
echo jddayofweek($jd, 1), "\n";  // Output: Sunday

?>

Para convertir en sentido inverso, usa jdtofrench(), la función inversa de frenchtojd().

Errores frecuentes

  • El orden de los argumentos es month, day, year — no el orden día-mes-año usado en las fechas francesas cotidianas. Intercambiar los dos primeros es el error más frecuente.
  • Un retorno de 0 significa "inválido o fuera de rango," no "se lanzó un error." La función no lanza una excepción, así que valida el resultado tú mismo.
  • Los días complementarios se encuentran en el mes 13, no agregados al mes 12. Usa frenchtojd(13, 1, $year) hasta frenchtojd(13, 6, $year) para ellos.
  • La extensión calendar no siempre está habilitada, especialmente en imágenes Docker mínimas. Protege con extension_loaded('calendar') en código portable.

Funciones relacionadas

  • jdtofrench() — la inversa: día juliano → fecha del calendario republicano francés.
  • gregoriantojd() — convierte una fecha gregoriana a un día juliano.
  • juliantojd() — convierte una fecha del calendario juliano (proléptico) a un día juliano.
  • jddayofweek() — obtiene el día de la semana para un día juliano.

Conclusión

frenchtojd() convierte fechas del calendario republicano francés a días julianos con una sola llamada a función. Recuerda el orden de argumentos month, day, year, trata un retorno de 0 como "fuera de rango" y usa el día juliano resultante como puente a otros calendarios mediante la familia jdto*().

Práctica

Práctica
¿Qué hace la función PHP frenchtojd()?
¿Qué hace la función PHP frenchtojd()?
Was this page helpful?