Aller au contenu

jdtofrench()

Introduction

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

Le Jour Julian (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 intégrée jdtofrench() dans l'extension Calendar pour convertir le Jour Julian en calendrier révolutionnaire français, qui gère automatiquement les règles d'année bissextile du calendrier.

Formule de conversion

Pour convertir le Jour Julian en date du calendrier révolutionnaire français, nous utilisons l'algorithme suivant :

console
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évolutionnaire 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 du Jour Julian en date du calendrier révolutionnaire français est simple une fois décomposée. Examinons chaque étape.

Étape 1 : Calculer J et N

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

console
J = JDC - 2375839
N = J mod 365

Étape 2 : Calculer Q et R

Le calendrier révolutionnaire français divise l'année en 12 mois de exactement 30 jours, suivis de 5 ou 6 jours complémentaires. Nous déterminons le mois (Q) et le jour (R) en utilisant ces règles :

console
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 se situe dans l'un des 12 mois. Nous divisons N par 30 pour trouver l'indice du mois et ajoutons 1. Le reste donne l'indice du jour, également ajusté en ajoutant 1. Si N est supérieur ou égal à 360, la date se situe dans la période des jours complémentaires (Sans-culottides), qui est attribuée au numéro de mois 13.

Exemple

Convertissons le Jour Julian 2376000 en une date du calendrier révolutionnaire français.

Tout d'abord, calculons J et N :

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

Ensuite, calculons Q et R :

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

Le mois 6 correspond à Brumaire. Par conséquent, le Jour Julian 2376000 correspond au 12 Brumaire, An 1 (12 octobre 1792).

Implémentation PHP

PHP fournit une fonction native jdtofrench() dans l'extension Calendar, qui gère automatiquement la conversion et la logique des années bissextiles :

php
// Requires the Calendar extension
echo jdtofrench(2376000); // Outputs: 12 Brumaire, Year 1

Pour les dates antérieures à l'époque du calendrier (22 septembre 1792), vous devez valider l'entrée pour éviter des résultats inattendus :

php
$jdc = 2376000;
if ($jdc >= 2375839) {
    echo jdtofrench($jdc);
} else {
    echo "Date is before the French Revolutionary Calendar epoch.";
}

Conclusion

En conclusion, PHP fournit une fonction intégrée jdtofrench() dans l'extension Calendar pour convertir les Jours Julians en dates du calendrier révolutionnaire français. En utilisant cette fonction native, vous pouvez traduire avec précision les dates historiques tout en tenant automatiquement compte des règles d'année bissextile et des jours complémentaires du calendrier.

Pratique

Que fait la fonction jdtofrench() en PHP ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.