cal_to_jd()
Convertir des dates calendaires en numéros de jour julien avec PHP
PHP cal_to_jd() : Convertir une date calendaire en numéro de jour julien
La fonction cal_to_jd() convertit une date d'un calendrier pris en charge (grégorien, julien, juif ou républicain français) en un numéro de jour julien — un entier unique qui identifie un jour. Comme le résultat est simplement un nombre, il constitue un dénominateur commun pratique pour comparer des dates, calculer le nombre de jours entre deux dates ou effectuer des conversions entre systèmes calendaires.
Cette page couvre la signature de la fonction, un exemple fonctionnel, les calendriers pris en charge, les pièges les plus courants et les ressources complémentaires.
Remarque :
cal_to_jd()fait partie de l'extension Calendar de PHP. L'extension est fournie avec PHP mais doit être activée (elle est compilée par défaut dans la plupart des versions). Si la fonction n'est pas définie, activezext-calendar.
Qu'est-ce qu'un numéro de jour julien ?
Le numéro de jour julien (souvent appelé Julian Day Number, JDN) est un décompte continu des jours à partir du 1er janvier 4713 av. J.-C. dans le calendrier julien proleptique, qui correspond au jour 0. Chaque date ultérieure correspond à un entier positif plus grand, et les dates antérieures seraient négatives.
Ce décompte est indépendant du calendrier : il ne dépend pas des mois, des années bissextiles ni du système calendaire utilisé par une culture. C'est pourquoi il constitue la représentation « pivot » standard en astronomie, en calcul scientifique et dans tout code devant interopérer entre différents calendriers.
Ne confondez pas le numéro de jour julien (un numéro de jour) avec le calendrier julien (le calendrier pré-grégorien). Ils sont sans rapport malgré la similitude du nom.
Syntaxe
cal_to_jd(int $calendar, int $month, int $day, int $year): int| Paramètre | Description |
|---|---|
$calendar | Une constante de calendrier : CAL_GREGORIAN, CAL_JULIAN, CAL_JEWISH ou CAL_FRENCH. |
$month | Le numéro du mois (1–12 pour le grégorien/julien). |
$day | Le jour du mois. |
$year | L'année. |
Valeur de retour : le numéro de jour julien sous forme de int, ou 0 si la date est invalide pour le calendrier choisi.
Exemple de base
Convertir le 2 mars 2023 (grégorien) en numéro de jour julien :
Notez l'ordre des arguments : il s'agit de mois, jour, année, pas de jour-mois-année ou année-mois-jour. Confondre cet ordre est l'erreur la plus fréquente avec cal_to_jd().
Choisir la constante de calendrier
Le premier argument détermine à quel calendrier appartiennent vos valeurs mois/jour/année :
| Constante | Calendrier |
|---|---|
CAL_GREGORIAN | Grégorien (le calendrier civil moderne) |
CAL_JULIAN | Julien (calendrier pré-1582) |
CAL_JEWISH | Calendrier juif (hébreu) |
CAL_FRENCH | Calendrier républicain français |
La même date calendaire peut produire des numéros de jour julien différents selon la constante passée, donc faites toujours correspondre la constante au calendrier d'origine de votre entrée :
<?php
// October 15, 1582 — the day the Gregorian calendar began.
echo cal_to_jd(CAL_GREGORIAN, 10, 15, 1582), "\n"; // 2299161
echo cal_to_jd(CAL_JULIAN, 10, 5, 1582), "\n"; // 2299161
?>Les deux affichent le même numéro de jour julien car la réforme grégorienne a sauté 10 jours : le 15 octobre grégorien et le 5 octobre julien sont le même jour physique.
Pièges courants
- Les dates invalides retournent
0, pasfalse. Passer une date inexistante comme le 30 février donne0. Validez les entrées utilisateur aveccheckdate()avant de convertir si vous devez détecter des dates incorrectes. - L'ordre des arguments est
mois, jour, année. Voir la remarque ci-dessus. - L'extension doit être activée. La fonction repose sur
ext-calendar; une erreur « undefined function » signifie qu'elle n'est pas chargée.
Aller-retour avec cal_from_jd()
cal_to_jd() dispose d'une fonction inverse : cal_from_jd() convertit un numéro de jour julien en date calendaire. Ensemble, elles permettent de convertir entre systèmes calendaires en passant par le numéro de jour julien comme pivot neutre :
<?php
$jd = cal_to_jd(CAL_GREGORIAN, 3, 2, 2023);
$date = cal_from_jd($jd, CAL_GREGORIAN);
echo $date['date']; // 3/2/2023
?>Fonctions associées
cal_from_jd()— la fonction inverse : numéro de jour julien vers une date calendaire.cal_info()— métadonnées (noms des mois, etc.) sur un calendrier.cal_days_in_month()— nombre de jours dans un mois donné.gregoriantojd(),juliantojd(),jewishtojd(),frenchtojd()— raccourcis spécifiques à chaque calendrier pour la même conversion.- Consultez l'aperçu complet des fonctions Calendar de PHP.
Conclusion
cal_to_jd() réduit toute date d'un calendrier pris en charge à un entier unique — le numéro de jour julien — vous offrant un moyen neutre de comparer des dates, mesurer des intervalles et convertir entre calendriers. Retenez l'ordre des arguments mois, jour, année, choisissez la constante de calendrier correspondant à votre entrée, et utilisez cal_from_jd() pour effectuer la conversion inverse.