Comment convertir une date juive en date julienne en PHP
Apprenez à utiliser jewishtojd() en PHP pour convertir une date du calendrier juif en nombre de jours juliens, avec des exemples pratiques.
La fonction jewishtojd() de PHP convertit une date du calendrier juif (hébreu) en un nombre de jours juliens — un entier unique qui identifie un jour. Comme les nombres de jours juliens sont indépendants de tout calendrier, ils servent de « pivot » commun permettant de convertir entre différents systèmes calendaires : convertissez une date juive en nombre de jours juliens, puis convertissez ce nombre en date grégorienne (ou tout autre calendrier supporté). Cette page explique le fonctionnement de la fonction, ses paramètres et cas particuliers, et présente des exemples vérifiés et exécutables.
Les fonctions du calendrier nécessitent l'extension PHP
calendar. Elle est incluse dans la plupart des versions et activée par défaut sous Windows ; sous Linux, vous devrez peut-être compiler PHP avec--with-calendarou installer un paquet tel quephp-calendar.
Qu'est-ce qu'un nombre de jours juliens ?
Un nombre de jours juliens (JDN) est le nombre de jours écoulés depuis midi (UTC) le 1er janvier 4713 av. J.-C. dans le calendrier julien proleptique. Ne le confondez pas avec le calendrier julien — malgré le nom partagé, le nombre de jours juliens est simplement un compteur continu de jours sans mois ni années.
Le JDN est le format de liaison de l'extension de calendrier PHP. Chaque fonction *tojd() (jewishtojd(), gregoriantojd(), juliantojd(), frenchtojd()) produit un JDN, et chaque fonction jdto*() en consomme un. Ainsi, toute conversion inter-calendriers passe par lui :
Jewish date ──jewishtojd()──▶ JDN ──jdtogregorian()──▶ Gregorian dateSignature de la fonction
jewishtojd(int $month, int $day, int $year): int| Paramètre | Description |
|---|---|
$month | Numéro du mois juif où 1 = Tishri, pas janvier (voir le piège ci-dessous). La plage valide est 1–13. |
$day | Jour du mois, 1–30. |
$year | Année juive, comptée depuis la date traditionnelle de la création (année 1 ≈ 3761 av. J.-C.). |
La fonction retourne le nombre de jours juliens sous forme d'entier, ou 0 pour une date en dehors de la plage supportée (années approximativement 1 à 9999).
Piège : la numérotation des mois commence à Tishri
C'est l'erreur la plus courante avec jewishtojd(). L'année religieuse juive commence au printemps (Nisan), mais PHP numérote les mois à partir de Tishri (le nouvel an civil, Rosh Hashanah). Ainsi :
| # | Mois (année non bissextile) |
|---|---|
| 1 | Tishri |
| 2 | Heshvan |
| 3 | Kislev |
| 4 | Tevet |
| 5 | Shevat |
| 6 | Adar |
| 7 | Adar (identique au 6 pour une année non bissextile) |
| 8 | Nisan |
| 9 | Iyyar |
| 10 | Sivan |
| 11 | Tammuz |
| 12 | Av |
| 13 | Elul |
Dans une année bissextile, un mois supplémentaire est inséré : le mois 6 devient Adar I et le mois 7 devient Adar II. Passer 6 ne signifie pas juin ou Sivan — Sivan est le mois 10.
Exemple de base
Ce code convertit le 6 Sivan 5783 (la fête de Shavuot, qui est le 10e mois, jour 6) en son nombre de jours juliens, puis le reconvertit en date grégorienne pour vérification :
Conversion d'une date juive en nombre de jours juliens
<?php
$jewishMonth = 10; // Sivan
$jewishDay = 6;
$jewishYear = 5783;
$jdn = jewishtojd($jewishMonth, $jewishDay, $jewishYear);
echo "Julian Day Count: " . $jdn . "\n";
echo "Gregorian date: " . jdtogregorian($jdn) . "\n";Résultat :
Julian Day Count: 2460091
Gregorian date: 5/26/2023Ainsi, le 6 Sivan 5783 correspond au 26 mai 2023 dans le calendrier grégorien.
Conversion d'une date juive en date grégorienne
L'association de jewishtojd() avec jdtogregorian() est le cas d'utilisation typique — par exemple, trouver la date grégorienne de Rosh Hashanah (1 Tishri) :
<?php
function jewishToGregorian(int $month, int $day, int $year): string
{
$jdn = jewishtojd($month, $day, $year);
if ($jdn === 0) {
return "Invalid Jewish date";
}
return jdtogregorian($jdn);
}
echo jewishToGregorian(1, 1, 5784) . "\n"; // Rosh Hashanah 5784Résultat :
9/16/2023Aller-retour avec jdtojewish()
L'inverse de jewishtojd() est jdtojewish(), qui reconvertit un nombre de jours juliens en une chaîne de date juive au format mois/jour/année. L'aller-retour est un bon moyen de vérifier que la numérotation des mois est correcte :
<?php
$jdn = jewishtojd(10, 6, 5783); // 6 Sivan 5783
echo "JDN: " . $jdn . "\n";
echo "Jewish: " . jdtojewish($jdn) . "\n"; // month/day/yearRésultat :
JDN: 2460091
Jewish: 10/6/5783Gestion des entrées invalides
Pour une date que PHP ne peut pas représenter, jewishtojd() retourne 0 plutôt que de lancer une erreur. Il faut donc toujours vérifier ce cas avant de passer le résultat à une autre fonction :
<?php
$jdn = jewishtojd(0, 5, 5783); // month 0 is invalid
var_dump($jdn); // int(0)
echo $jdn === 0 ? "Out of range\n" : jdtogregorian($jdn) . "\n";Résultat :
int(0)
Out of rangeQuand utiliser cette fonction ?
- Afficher des dates hébraïques/fêtes issues d'une base de données dans le calendrier grégorien local de l'utilisateur.
- Calculer le nombre de jours entre deux dates exprimées dans des systèmes calendaires différents (soustraire leurs JDN).
- Trouver le jour de la semaine d'une date juive en passant le JDN à
jddayofweek().
Conclusion
jewishtojd() convertit une date du calendrier juif (hébreu) en un nombre de jours juliens, l'entier indépendant du calendrier que l'extension calendar de PHP utilise comme pivot pour toutes les conversions inter-calendriers. Les deux points essentiels à retenir sont que la numérotation des mois commence à Tishri (1), pas à Nisan, et que la fonction retourne 0 pour les dates hors plage. Combinez-la avec jdtogregorian(), jdtojewish() ou jddayofweek() pour construire des flux de traitement de dates complets.