W3docs

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-calendar ou installer un paquet tel que php-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 date

Signature de la fonction

jewishtojd(int $month, int $day, int $year): int
ParamètreDescription
$monthNuméro du mois juif où 1 = Tishri, pas janvier (voir le piège ci-dessous). La plage valide est 1–13.
$dayJour du mois, 1–30.
$yearAnné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)
1Tishri
2Heshvan
3Kislev
4Tevet
5Shevat
6Adar
7Adar (identique au 6 pour une année non bissextile)
8Nisan
9Iyyar
10Sivan
11Tammuz
12Av
13Elul

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/2023

Ainsi, 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 5784

Résultat :

9/16/2023

Aller-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/year

Résultat :

JDN:    2460091
Jewish: 10/6/5783

Gestion 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 range

Quand 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.

Pratique

Pratique
Quelle est la fonction de jewishtojd() en PHP ?
Quelle est la fonction de jewishtojd() en PHP ?
Was this page helpful?