frenchtojd()
Erfahren Sie, wie PHP frenchtojd() ein Datum im Französischen Republikanischen Kalender in eine Julian-Day-Zahl umwandelt.
Einführung
PHPs frenchtojd() Funktion wandelt ein Datum im Französischen Republikanischen Kalender in eine Julian Day Count — eine einzelne Ganzzahl, die einen Kalendertag eindeutig identifiziert. Diese Seite erklärt, was diese beiden Begriffe bedeuten, wie die Funktion aufgerufen wird, was ihre Rückgabewerte bedeuten und welche Grenzfälle es gibt.
Ein Julian Day Count (JDC) ist die kontinuierliche Zählung der Tage seit dem Beginn der Julianischen Periode: Mittag UTC am 1. Januar 4713 v. Chr. Da es sich um eine einfache Ganzzahl handelt, ist es das gemeinsame „Pivot"-Format, das PHP zur Konvertierung zwischen Kalendern verwendet — man konvertiert Kalender A in einen Julianischen Tag und dann diesen Julianischen Tag in Kalender B. Es wird auch häufig in der Astronomie und in jedem Bereich verwendet, der eine kontinuierliche, kalenderunabhängige Zeitmessung benötigt.
Der Französische Republikanische Kalender wurde in Frankreich von 1793 bis 1805 verwendet und durch die Französische Revolution eingeführt, um den Gregorianischen Kalender zu ersetzen. Er hat 12 Monate mit jeweils 30 Tagen, die in drei Zehn-Tage-Wochen (Décades) unterteilt sind, plus 5 oder 6 zusätzliche „Ergänzungstage" am Ende des Jahres. Die Jahre werden ab der Gründung der Republik gezählt (Jahr I, Jahr II, …), konventionell mit römischen Ziffern geschrieben.
Verwendung von PHPs eingebauter frenchtojd() Funktion
Um ein Datum im Französischen Republikanischen Kalender in einen Julianischen Tag in PHP umzuwandeln, rufen Sie die native frenchtojd() Funktion auf. PHP erledigt die Kalenderberechnungen intern, sodass Sie den Algorithmus nicht selbst implementieren müssen.
Hinweis: Diese Funktion erfordert, dass die calendar-Erweiterung aktiviert ist. Prüfen Sie dies mit extension_loaded('calendar'); wenn false zurückgegeben wird, aktivieren Sie die Erweiterung in Ihrer php.ini.
<?php
$jd = frenchtojd($month, $day, $year);
?>Die Funktion akzeptiert drei Integer-Parameter und gibt ein int zurück:
$month: Die Monatsnummer (1–13). Die Monate 1–12 sind die regulären 30-tägigen Monate (Vendémiaire … Fructidor); Monat 13 enthält die Ergänzungstage.$day: Der Tag im Monat (1–30 für Monate 1–12, 1–6 für Monat 13).$year: Das Jahr der Französischen Republik, z. B.1für Jahr I.
Der gültige Bereich ist ungefähr 1 Vendémiaire Jahr 1 bis Ende von Jahr 14. Jedes Datum außerhalb des unterstützten Bereichs — einschließlich frenchtojd(0, 0, 0) — gibt 0 zurück. Prüfen Sie immer auf ein 0-Ergebnis, bevor Sie den Wert verwenden.
Beispielverwendung
Übergeben Sie Monat, Tag und Jahr des Französischen Datums als Parameter:
<?php
$jd = frenchtojd(12, 22, 1);
echo $jd; // Output: 2376191
?>Hier konvertieren wir 22 Fructidor, Jahr I (Monat 12, Tag 22, Jahr 1) in seine Julian Day Count, 2376191. Dieser Julianische Tag entspricht dem 8. September 1793 im Gregorianischen Kalender.
Hin- und Rückkonvertierung in andere Kalender
Da das Ergebnis ein Julianischer Tag ist, können Sie ihn an jede jdto*()-Funktion übergeben, um denselben Tag in einem anderen Kalender darzustellen. Dies ist der häufigste Grund, frenchtojd() aufzurufen:
<?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
?>Um umgekehrt zu konvertieren, verwenden Sie jdtofrench(), die Umkehrfunktion von frenchtojd().
Häufige Fehlerquellen
- Die Reihenfolge der Argumente ist
Monat, Tag, Jahr— nicht die im alltäglichen Französischen Datumsformat übliche Tag-Monat-Jahr-Reihenfolge. Das Vertauschen der ersten beiden ist der häufigste Fehler. - Ein Rückgabewert
0bedeutet „ungültig oder außerhalb des Bereichs," nicht „ein Fehler wurde ausgelöst." Die Funktion wirft keine Ausnahme, daher müssen Sie das Ergebnis selbst validieren. - Die Ergänzungstage befinden sich in Monat 13, nicht an Monat 12 angehängt. Verwenden Sie
frenchtojd(13, 1, $year)bisfrenchtojd(13, 6, $year)dafür. - Die
calendar-Erweiterung ist nicht immer aktiviert, insbesondere in minimalen Docker-Images. Sichern Sie sich mitextension_loaded('calendar')in portablem Code ab.
Verwandte Funktionen
jdtofrench()— die Umkehrfunktion: Julianischer Tag → Datum im Französischen Republikanischen Kalender.gregoriantojd()— konvertiert ein Gregorianisches Datum in einen Julianischen Tag.juliantojd()— konvertiert ein Datum des Julianischen (proleptischen) Kalenders in einen Julianischen Tag.jddayofweek()— ermittelt den Wochentag für einen Julianischen Tag.
Fazit
frenchtojd() macht die Konvertierung Französischer Republikanischer Daten in Julianische Tage zu einem einzigen Funktionsaufruf. Denken Sie an die Argumentreihenfolge Monat, Tag, Jahr, behandeln Sie einen 0-Rückgabewert als „außerhalb des Bereichs" und verwenden Sie den resultierenden Julianischen Tag als Brücke zu anderen Kalendern über die jdto*()-Familie.