W3docs

jdtofrench()

La fonction jdtofrench() de PHP convertit un numéro de jour julien en date du calendrier républicain français, gérant automatiquement les années bissextiles.

Introduction

Le calendrier républicain français, également connu sous le nom de calendrier révolutionnaire, a été créé pendant la Révolution française et utilisé en France de 1793 à 1805. Il a été conçu pour remplacer le calendrier grégorien et se voulait plus rationnel et scientifique. Ce calendrier reposait sur l'idée du temps décimal et se composait de 12 mois de 30 jours chacun, auxquels s'ajoutaient 5 ou 6 jours complémentaires en fin d'année pour compenser les jours supplémentaires.

Le numéro de jour julien (Julian Day Count), quant à lui, est un système de comptage des jours utilisé en astronomie. Il est défini comme le nombre de jours écoulés depuis midi le 1er janvier 4713 av. J.-C. (calendrier julien). PHP inclut une fonction native jdtofrench() dans l'extension Calendar pour convertir le numéro de jour julien en date du calendrier républicain français, gérant automatiquement les règles d'années bissextiles du calendrier.

Formule de conversion

Pour convertir un numéro de jour julien en date du calendrier républicain français, on utilise l'algorithme suivant :

J = JDC - 2375839
N = J mod 365
if N < 360 then
    Q = floor(N / 30) + 1
    R = (N mod 30) + 1
else
    Q = 13
    R = N - 359
end if

Où :

  • J est le nombre de jours écoulés depuis le début du calendrier républicain français (22 septembre 1792)
  • N est le numéro du jour dans l'année en cours (0-364)
  • Q est le numéro du mois (1-12 pour les 12 mois, 13 pour les jours complémentaires)
  • R est le numéro du jour dans le mois (1-30) ou le jour complémentaire (1-5/6)

Explication de la formule

La formule de conversion d'un numéro de jour julien en date du calendrier républicain français est simple une fois décomposée. Examinons chaque étape.

Étape 1 : Calculer J et N

D'abord, calculez J en soustrayant 2375839 (le numéro de jour julien du 22 septembre 1792, l'époque du calendrier) du numéro de jour julien cible. Ensuite, trouvez N, le numéro du jour dans le cycle de 365 jours en cours :

J = JDC - 2375839
N = J mod 365

Étape 2 : Calculer Q et R

Le calendrier républicain français divise l'année en 12 mois de exactement 30 jours, suivis de 5 ou 6 jours complémentaires. On détermine le mois (Q) et le jour (R) à l'aide des règles suivantes :

if N < 360 then
    Q = floor(N / 30) + 1
    R = (N mod 30) + 1
else
    Q = 13
    R = N - 359
end if

Si N est inférieur à 360, la date tombe dans l'un des 12 mois. On divise N par 30 pour trouver l'indice du mois et on ajoute 1. Le reste donne l'indice du jour, également ajusté en ajoutant 1. Si N est supérieur ou égal à 360, la date tombe dans la période des jours complémentaires (Sans-culottides), qui se voit attribuer le numéro de mois 13.

Syntaxe

jdtofrench(int $julian_day): string
ParamètreDescription
$julian_dayLe numéro de jour julien entier à convertir.

Valeur de retour : une chaîne au format "mois/jour/année", où chaque partie est un nombre (par exemple "6/12/1"). La fonction retourne "0/0/0" pour tout numéro de jour julien en dehors de la plage valide du calendrier (du 22 septembre 1792 au 22 septembre 1806).

Exemple

Convertissons le numéro de jour julien 2376000 en date du calendrier républicain français.

D'abord, calculons J et N :

J = 2376000 - 2375839 = 161
N = 161 mod 365 = 161

Ensuite, calculons Q et R :

N < 360, so:
Q = floor(161 / 30) + 1 = 5 + 1 = 6
R = (161 mod 30) + 1 = 11 + 1 = 12

Le résultat est donc le mois 6, jour 12, année 1. En utilisant le tableau des mois ci-dessous, le mois 6 est Ventôse, ce qui donne 12 Ventôse, An 1.

Implémentation PHP

PHP fournit une fonction native jdtofrench() dans l'extension Calendar, qui gère automatiquement la conversion et la logique des jours complémentaires. Elle retourne une chaîne numérique "mois/jour/année" :

// Requires the Calendar extension
echo jdtofrench(2376000); // Outputs: 6/12/1

Les trois nombres correspondent exactement au Q (mois), R (jour) et à l'année que nous avons calculés ci-dessus. Pour obtenir le nom historique du mois, il suffit de découper la chaîne et de rechercher le mois dans un tableau :

$frenchMonths = [
    1 => "Vendémiaire", 2 => "Brumaire",  3 => "Frimaire",
    4 => "Nivôse",      5 => "Pluviôse",  6 => "Ventôse",
    7 => "Germinal",    8 => "Floréal",   9 => "Prairial",
    10 => "Messidor",  11 => "Thermidor", 12 => "Fructidor",
    13 => "Sans-culottides",
];

list($month, $day, $year) = explode("/", jdtofrench(2376000));
echo "{$day} " . $frenchMonths[$month] . ", Year {$year}"; // 12 Ventôse, Year 1

Pour les dates en dehors de la plage valide du calendrier, la fonction retourne "0/0/0" ; il convient donc de vérifier cette valeur sentinelle plutôt que de supposer qu'il s'agit d'une date réelle :

$jdc = 2376000;
$result = jdtofrench($jdc);
if ($result !== "0/0/0") {
    echo "French Republican date: {$result}";
} else {
    echo "Date is outside the French Revolutionary Calendar range.";
}

Fonctions associées

L'extension Calendar fournit des convertisseurs complémentaires que vous pouvez combiner avec jdtofrench() :

  • frenchtojd() — l'inverse : une date républicaine française vers un numéro de jour julien.
  • jdtogregorian() — numéro de jour julien vers une date grégorienne.
  • jdtojulian() — numéro de jour julien vers une date du calendrier julien.
  • jddayofweek() — le jour de la semaine pour un numéro de jour julien donné.

Conclusion

En conclusion, PHP fournit une fonction native jdtofrench() dans l'extension Calendar pour convertir les numéros de jour julien en dates du calendrier républicain français. En utilisant cette fonction native, vous pouvez traduire avec précision des dates historiques tout en gérant automatiquement les règles d'années bissextiles et les jours complémentaires du calendrier.

Pratique

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