jdtofrench()
Einführung
Der Französische Revolutionskalender, auch als Republikanischer Kalender bekannt, wurde während der Französischen Revolution eingeführt und in Frankreich von 1793 bis 1805 verwendet. Er sollte den gregorianischen Kalender ersetzen und war rationaler und wissenschaftlicher konzipiert. Der Kalender basierte auf dem Konzept der Dezimalzeit und bestand aus 12 Monaten zu je 30 Tagen, ergänzt am Jahresende um 5 oder 6 zusätzliche Tage, um die fehlenden Tage auszugleichen.
Der Julianische Tag (Julian Day Count) ist hingegen ein in der Astronomie verwendetes System zur Tageszählung. Er ist definiert als die Anzahl der Tage, die seit dem Mittag des 1. Januar 4713 v. Chr. (julianischer Kalender) vergangen sind. PHP bietet in der Kalendererweiterung eine integrierte Funktion jdtofrench() an, die Julianische Tage in das Datum des Französischen Revolutionskalenders umrechnet und dabei automatisch die Schaltjahresregeln des Kalenders berücksichtigt.
Umrechnungsformel
Zur Umrechnung des Julianischen Tags in ein Datum des Französischen Revolutionskalenders verwenden wir den folgenden Algorithmus:
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 ifWobei:
- J die Anzahl der seit dem Beginn des Französischen Revolutionskalenders (22. September 1792) vergangenen Tage ist
- N die Tagesnummer im aktuellen Jahr (0–364) ist
- Q die Monatsnummer ist (1–12 für die 12 Monate, 13 für die Komplementärtage)
- R die Tagesnummer im Monat (1–30) oder der Komplementärtag (1–5/6) ist
Erläuterung der Formel
Die Formel zur Umrechnung des Julianischen Tags in ein Datum des Französischen Revolutionskalenders ist im Detail betrachtet recht einfach. Schauen wir uns jeden Schritt an.
Schritt 1: Berechnung von J und N
Berechnen Sie zunächst J, indem Sie 2375839 (den Julianischen Tag des 22. September 1792, also den Epochstart des Kalenders) vom Ziel-Julianischen Tag abziehen. Ermitteln Sie anschließend N, die Tagesnummer innerhalb des aktuellen 365-Tage-Zyklus:
J = JDC - 2375839
N = J mod 365Schritt 2: Berechnung von Q und R
Der Französischen Revolutionskalender teilt das Jahr in 12 Monate zu je genau 30 Tagen auf, gefolgt von 5 oder 6 Komplementärtagen. Wir bestimmen den Monat (Q) und den Tag (R) anhand dieser Regeln:
if N < 360 then
Q = floor(N / 30) + 1
R = (N mod 30) + 1
else
Q = 13
R = N - 359
end ifWenn N kleiner als 360 ist, fällt das Datum in einen der 12 Monate. Wir teilen N durch 30, um den Monatsindex zu ermitteln, und addieren 1. Der Restwert ergibt den Tagesindex, der ebenfalls um 1 erhöht wird. Ist N 360 oder größer, fällt das Datum in den Zeitraum der Komplementärtage (Sans-culottides), dem die Monatsnummer 13 zugeordnet ist.
Beispiel
Wir rechnen den Julianischen Tag 2376000 in ein Datum des Französischen Revolutionskalenders um.
Zuerst berechnen wir J und N:
J = 2376000 - 2375839 = 161
N = 161 mod 365 = 161Anschließend berechnen wir Q und R:
N < 360, so:
Q = floor(161 / 30) + 1 = 5 + 1 = 6
R = (161 mod 30) + 1 = 11 + 1 = 12Monat 6 entspricht Brumaire. Demzufolge entspricht der Julianische Tag 2376000 dem 12. Brumaire, Jahr 1 (12. Oktober 1792).
PHP-Implementierung
PHP stellt in der Kalendererweiterung eine native Funktion jdtofrench() bereit, die die Umrechnung und die Schaltjahreslogik automatisch übernimmt:
// Requires the Calendar extension
echo jdtofrench(2376000); // Outputs: 12 Brumaire, Year 1Für Daten vor dem Epochstart des Kalenders (22. September 1792) sollten Sie die Eingabe validieren, um unerwartete Ergebnisse zu vermeiden:
$jdc = 2376000;
if ($jdc >= 2375839) {
echo jdtofrench($jdc);
} else {
echo "Date is before the French Revolutionary Calendar epoch.";
}Fazit
Zusammenfassend bietet PHP in der Kalendererweiterung die integrierte Funktion jdtofrench() zur Umrechnung von Julianischen Tagen in Daten des Französischen Revolutionskalenders. Durch die Verwendung dieser nativen Funktion können Sie historische Daten präzise umrechnen, wobei die Schaltjahresregeln und Komplementärtage des Kalenders automatisch berücksichtigt werden.
Praxis
Was macht die Funktion jdtofrench() in PHP?