frenchtojd()
Apprenez à utiliser la fonction PHP frenchtojd() pour convertir une date du calendrier républicain français en Julian Day Count.
Introduction
La fonction frenchtojd() de PHP convertit une date du calendrier républicain français en un Julian Day Count — un entier unique qui identifie un jour calendaire. Cette page explique ce que signifient ces deux termes, comment appeler la fonction, ce que ses valeurs de retour représentent, et les cas limites qui piègent les développeurs.
Un Julian Day Count (JDC) est le comptage continu de jours depuis le début de la période julienne : le midi UTC du 1er janvier 4713 av. J.-C. Comme c'est un simple entier, c'est le format « pivot » commun utilisé par PHP pour convertir entre les calendriers — vous convertissez le calendrier A en un jour julien, puis vous convertissez ce jour julien en calendrier B. Il est également largement utilisé en astronomie et dans tout domaine nécessitant une mesure du temps continue et indépendante du calendrier.
Le calendrier républicain français a été utilisé en France de 1793 à 1805, introduit par la Révolution française pour remplacer le calendrier grégorien. Il comprend 12 mois de 30 jours chacun, divisés en trois semaines de dix jours (décades), plus 5 ou 6 jours complémentaires à la fin de l'année. Les années sont comptées depuis la fondation de la République (An I, An II, …), écrites conventionnellement en chiffres romains.
Utiliser la fonction native frenchtojd() de PHP
Pour convertir une date républicaine française en jour julien en PHP, appelez la fonction native frenchtojd(). PHP gère les calculs calendaires en interne, vous n'avez donc pas à implémenter l'algorithme vous-même.
Remarque : Cette fonction nécessite que l'extension calendar soit activée. Vérifiez avec extension_loaded('calendar') ; si elle retourne false, activez l'extension dans votre php.ini.
<?php
$jd = frenchtojd($month, $day, $year);
?>La fonction accepte trois paramètres entiers et retourne un int :
$month: Le numéro du mois (1–13). Les mois 1–12 sont les mois réguliers de 30 jours (Vendémiaire … Fructidor) ; le mois 13 contient les jours complémentaires.$day: Le jour du mois (1–30 pour les mois 1–12, 1–6 pour le mois 13).$year: L'année de la République française, par ex.1pour l'An I.
La plage valide est approximativement du 1 Vendémiaire An 1 jusqu'à la fin de l'An 14. Toute date en dehors de la plage supportée — y compris frenchtojd(0, 0, 0) — retourne 0. Vérifiez toujours un résultat à 0 avant d'utiliser la valeur.
Exemple d'utilisation
Passez le mois, le jour et l'année de la date française comme paramètres :
<?php
$jd = frenchtojd(12, 22, 1);
echo $jd; // Output: 2376191
?>Ici nous convertissons le 22 Fructidor, An I (mois 12, jour 22, année 1) en son Julian Day Count, 2376191. Ce jour julien correspond au 8 septembre 1793 dans le calendrier grégorien.
Conversion vers d'autres calendriers
Comme le résultat est un jour julien, vous pouvez le passer à n'importe quelle fonction jdto*() pour exprimer le même jour dans un autre calendrier. C'est la raison la plus courante d'appeler frenchtojd() :
<?php
$jd = frenchtojd(12, 22, 1); // 22 Fructidor, Year I → 2376191
echo jdtogregorian($jd), "\n"; // Output: 9/8/1793
echo jddayofweek($jd, 1), "\n"; // Output: Sunday
?>Pour convertir dans l'autre sens, utilisez jdtofrench(), la fonction inverse de frenchtojd().
Pièges courants
- L'ordre des arguments est
month, day, year— et non l'ordre jour-mois-année utilisé dans les dates françaises du quotidien. Inverser les deux premiers est le bug le plus fréquent. - Un retour à
0signifie « invalide ou hors plage », pas « une erreur a été levée ». La fonction ne lève pas d'exception, validez donc vous-même le résultat. - Les jours complémentaires se trouvent dans le mois 13, et non ajoutés au mois 12. Utilisez
frenchtojd(13, 1, $year)àfrenchtojd(13, 6, $year)pour les traiter. - L'extension
calendarn'est pas toujours activée, notamment dans les images Docker minimales. Protégez votre code avecextension_loaded('calendar')dans le code portable.
Fonctions associées
jdtofrench()— la fonction inverse : Julian Day → date républicaine française.gregoriantojd()— convertit une date grégorienne en jour julien.juliantojd()— convertit une date du calendrier julien (proleptique) en jour julien.jddayofweek()— obtient le jour de la semaine pour un jour julien.
Conclusion
frenchtojd() réduit la conversion de dates républicaines françaises en jours juliens à un simple appel de fonction. Retenez l'ordre des arguments month, day, year, traitez un retour à 0 comme « hors plage », et utilisez le jour julien résultant comme passerelle vers d'autres calendriers via la famille jdto*().