W3docs

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, activez ext-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ètreDescription
$calendarUne constante de calendrier : CAL_GREGORIAN, CAL_JULIAN, CAL_JEWISH ou CAL_FRENCH.
$monthLe numéro du mois (112 pour le grégorien/julien).
$dayLe jour du mois.
$yearL'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 :

php— editable, runs on the server

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 :

ConstanteCalendrier
CAL_GREGORIANGrégorien (le calendrier civil moderne)
CAL_JULIANJulien (calendrier pré-1582)
CAL_JEWISHCalendrier juif (hébreu)
CAL_FRENCHCalendrier 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, pas false. Passer une date inexistante comme le 30 février donne 0. Validez les entrées utilisateur avec checkdate() 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

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.

Pratique

Pratique
Quel est le rôle de la fonction cal_to_jd() tel que décrit sur https://www.w3docs.com/learn-php/cal-to-jd.html ?
Quel est le rôle de la fonction cal_to_jd() tel que décrit sur https://www.w3docs.com/learn-php/cal-to-jd.html ?
Was this page helpful?