W3docs

jddayofweek()

La fonction jddayofweek() en PHP retourne le jour de la semaine pour un numéro de jour julien donné. Découvrez les modes disponibles et des exemples.

La fonction jddayofweek() de PHP retourne le jour de la semaine pour un numéro de jour julien donné. Cette page explique ce qu'est un numéro de jour julien, la valeur exacte renvoyée par chaque mode (la partie que la plupart des gens comprennent mal), ainsi qu'un exemple exécutable et vérifié.

Qu'est-ce qu'un numéro de jour julien ?

Un numéro de jour julien (JDN) est un entier unique qui compte le nombre de jours écoulés depuis midi le 1er janvier 4713 av. J.-C. (l'époque de la période julienne). Comme il s'agit d'un simple compteur continu, sans mois, années ni règles de calendrier, il constitue la « monnaie d'échange » commune pour convertir des dates entre différents systèmes de calendrier et effectuer des calculs de dates en astronomie et en histoire.

Vous saisissez rarement un numéro de jour julien à la main. Vous en produisez un à partir d'une date calendaire à l'aide d'un convertisseur tel que cal_to_jd() (et convertissez en sens inverse avec jdtogregorian()). jddayofweek() vous indique ensuite quel jour de la semaine correspond à ce JDN.

Le « numéro de jour julien » utilisé ici n'a aucun rapport avec le calendrier julien (le calendrier de l'époque de César remplacé par le calendrier grégorien en 1582). Les noms se ressemblent, mais ce sont des concepts différents.

Syntaxe

jddayofweek(int $julian_day, int $mode = CAL_DOW_DAYNO): int|string
  • $julian_day — le numéro de jour julien à examiner (un entier, par exemple le résultat de cal_to_jd()).
  • $mode — facultatif. Détermine ce que la fonction retourne. Par défaut : CAL_DOW_DAYNO (0).

Le paramètre mode

Le paramètre mode est la partie de cette fonction qui prête à confusion. Il existe trois modes, et le mode par défaut retourne un nombre commençant à 0 pour le dimanche — et non une plage de 1 à 7 commençant par lundi.

ModeConstanteRetourneExemple pour un jeudi
0 (défaut)CAL_DOW_DAYNOEntier 06, où 0 = dimanche et 6 = samedi4
1CAL_DOW_LONGNom complet du jour en anglais (string)"Thursday"
2CAL_DOW_SHORTAbréviation de trois lettres (string)"Thu"

Utilisez les constantes nommées (CAL_DOW_LONG, etc.) plutôt que les nombres bruts pour garder votre code lisible.

Comment utiliser jddayofweek() en PHP

Commencez par convertir la date cible en numéro de jour julien avec cal_to_jd(), qui prend le type de calendrier ainsi que des entiers séparés pour le mois, le jour et l'année (dans cet ordre). Passez ensuite le résultat à jddayofweek() avec le mode souhaité.

La fonction jddayofweek() en PHP

<?php
// Convert the Gregorian date 2023-03-02 to a Julian day number.
// Argument order is: calendar, month, day, year.
$julianDay = cal_to_jd(CAL_GREGORIAN, 3, 2, 2023);

// Mode 0 (default): integer, 0 = Sunday ... 6 = Saturday
echo "Day number: " . jddayofweek($julianDay, CAL_DOW_DAYNO) . "\n";

// Mode 1: full weekday name
echo "Full name:  " . jddayofweek($julianDay, CAL_DOW_LONG) . "\n";

// Mode 2: abbreviated weekday name
echo "Short name: " . jddayofweek($julianDay, CAL_DOW_SHORT) . "\n";
?>

Cela affiche :

Day number: 4
Full name:  Thursday
Short name: Thu

Le 2 mars 2023 était un jeudi, donc le mode par défaut retourne 4 (le dimanche étant 0, le jeudi est au quatrième index), CAL_DOW_LONG retourne "Thursday" et CAL_DOW_SHORT retourne "Thu".

Pièges courants

  • Le mode par défaut est basé sur le dimanche, pas le lundi. Le mode 0 retourne 0 pour le dimanche, et non 1 pour le lundi. Si vous attendez une numérotation ISO-8601 (lundi = 1), ajoutez votre propre décalage ou utilisez DateTime.
  • L'extension calendar doit être activée. jddayofweek() et cal_to_jd() font partie de l'extension calendar de PHP. Elle est fournie avec la plupart des distributions, mais peut être désactivée.
  • Mauvais ordre des arguments dans cal_to_jd(). L'ordre est (calendar, month, day, year), et non (year, month, day). Inverser le mois et le jour produit silencieusement un mauvais jour de la semaine.

Conclusion

jddayofweek() associe un numéro de jour julien à un jour de la semaine, soit sous forme d'index basé sur le dimanche (CAL_DOW_DAYNO), soit sous forme de nom complet (CAL_DOW_LONG), soit sous forme d'abréviation (CAL_DOW_SHORT). Combinée à cal_to_jd(), elle vous permet de déterminer avec précision les jours de la semaine pour des travaux de dates historiques, astronomiques ou inter-calendaires.

Pratique

Pratique
Que fait la fonction jddayofweek() en PHP ?
Que fait la fonction jddayofweek() en PHP ?
Was this page helpful?