gregoriantojd()
La función PHP gregoriantojd() convierte una fecha del calendario gregoriano en un número de día juliano, útil para cálculos de fechas y conversiones.
Introducción
La función PHP gregoriantojd() convierte una fecha del calendario gregoriano en un número de día juliano — un entero único que representa una fecha contando los días transcurridos desde un punto de inicio fijo. Esta página explica qué significan esos términos, muestra la firma de la función y los valores de retorno, recorre un ejemplo funcional y enlaza a las funciones de calendario inversas y relacionadas.
gregoriantojd() forma parte de la extensión Calendar incluida en PHP. No está obsoleta, pero la mayoría de los proyectos modernos solo necesitan números de día juliano para astronomía, interoperabilidad con datos científicos o conversión entre sistemas de calendario. Para la aritmética y el formato de fechas cotidianos, utiliza la clase DateTime en su lugar.
Historia del calendario gregoriano
El calendario gregoriano se introdujo como forma de corregir los errores del calendario juliano. El calendario juliano se basaba en la idea de que un año tenía exactamente 365,25 días de duración. Sin embargo, esto no era del todo preciso, y el calendario fue quedando gradualmente desincronizado con el año solar. En el momento en que se introdujo el calendario gregoriano, el calendario juliano llevaba 10 días de retraso.
El calendario gregoriano resolvió este problema introduciendo un nuevo sistema para calcular los años bisiestos. En el calendario gregoriano, un año es bisiesto si es divisible por 4, pero no por 100, a menos que también sea divisible por 400. Esto significa que años como 1700, 1800 y 1900 no son bisiestos, pero 1600 y 2000 sí lo son.
Sintaxis
gregoriantojd(int $month, int $day, int $year): intToma tres argumentos enteros en orden mes, día, año — nótese que el mes va primero, no el día:
$month— el mes, de1(enero) a12(diciembre).$day— el día del mes, de1a31.$year— el año. El rango válido es de-4714a9999. El año0no es válido.
La función devuelve el número de día juliano como un entero, o 0 si la fecha está fuera de rango.
¿Qué es un número de día juliano?
Un número de día juliano es una forma de representar cualquier fecha del calendario como un único entero siempre creciente. El conteo comienza desde el mediodía del 1 de enero de 4713 a. C. (en el calendario juliano proléptico). Como cada fecha se convierte en un número, puedes encontrar el número de días entre dos fechas con una simple resta, independientemente de los meses, los años bisiestos o los límites del calendario — que es exactamente por qué los astrónomos y los formatos de datos científicos lo utilizan.
Conversión de una fecha gregoriana
Para convertir el 14 de febrero de 2023 en un número de día juliano, pasa el mes, el día y el año:
$jd = gregoriantojd(2, 14, 2023);
echo $jd; // 2459990La variable $jd ahora contiene 2459990, el número de día juliano para esa fecha.
Manejo de fechas inválidas
Si la fecha está fuera del rango admitido, gregoriantojd() devuelve 0 en lugar de lanzar un error. Trata un resultado 0 como "entrada no válida":
$jd = gregoriantojd(13, 40, 2023); // month 13, day 40 — invalid
if ($jd === 0) {
echo "Invalid date.";
}Conversión inversa
Para ir en sentido contrario — de un número de día juliano de vuelta a una cadena de fecha gregoriana — usa la función inversa jdtogregorian():
$jd = gregoriantojd(2, 14, 2023);
echo jdtogregorian($jd); // 2/14/2023¿Cuándo usaría esto?
Recurre a gregoriantojd() cuando necesites:
- Contar días entre dos fechas restando sus números de día juliano.
- Convertir entre sistemas de calendario (por ejemplo, de gregoriano a juliano o a fechas judías) usando las demás funciones Calendar de PHP.
- Encontrar el día de la semana para una fecha con
jddayofweek().
Para el trabajo habitual en aplicaciones — analizar entradas del usuario, formatear salidas, añadir intervalos — prefiere la clase DateTime, que tiene soporte de zonas horarias y es mucho más cómoda.
Conclusión
gregoriantojd() convierte una fecha gregoriana en un único entero de número de día juliano, haciendo que los cálculos de fechas y las conversiones entre calendarios sean sencillos. Recuerda el orden de los argumentos con el mes primero, comprueba si hay un retorno 0 en entradas no válidas, y combínala con jdtogregorian() para convertir de vuelta. Para el manejo de fechas de uso general, la clase DateTime sigue siendo la herramienta adecuada.