W3docs

jddayofweek()

Die Funktion jddayofweek() gibt den Wochentag für eine Julianische Tageszahl zurück. Diese Seite erklärt Syntax, Modi und ein Praxisbeispiel.

PHPs jddayofweek() gibt den Wochentag für eine gegebene Julianische Tageszahl zurück. Diese Seite erklärt, was eine Julianische Tageszahl ist, welchen Wert jeder mode zurückgibt (der Teil, den die meisten falsch verstehen), sowie ein ausführbares, geprüftes Beispiel.

Was ist eine Julianische Tageszahl?

Eine Julianische Tageszahl (JDN) ist eine einzelne ganze Zahl, die die Anzahl der Tage zählt, die seit dem Mittag des 1. Januar 4713 v. Chr. (dem Beginn der Julianischen Periode) vergangen sind. Da es sich nur um einen fortlaufenden Zähler handelt, ohne Monate, Jahre oder Kalenderregeln, ist er die gängige „Währung" zur Umrechnung von Datumsangaben zwischen verschiedenen Kalendersystemen und für Datumsberechnungen in Astronomie und Geschichte.

Man gibt eine Julianische Tageszahl selten von Hand ein. Stattdessen erzeugt man sie aus einem Kalenderdatum mithilfe eines Konverters wie cal_to_jd() (und rechnet mit jdtogregorian() zurück). jddayofweek() gibt dann an, auf welchen Wochentag diese JDN fällt.

Die hier verwendete „Julianische Tageszahl" hat nichts mit dem Julianischen Kalender zu tun (dem Cäsar-zeitlichen Kalender, der 1582 durch den Gregorianischen Kalender ersetzt wurde). Die Namen sind ähnlich, aber es handelt sich um unterschiedliche Konzepte.

Syntax

jddayofweek(int $julian_day, int $mode = CAL_DOW_DAYNO): int|string
  • $julian_day — die zu prüfende Julianische Tageszahl (eine ganze Zahl, z. B. das Ergebnis von cal_to_jd()).
  • $mode — optional. Legt fest, was die Funktion zurückgibt. Standardwert ist CAL_DOW_DAYNO (0).

Der mode-Parameter

Der mode ist der Teil dieser Funktion, der häufig zu Verwirrung führt. Es gibt drei Modi, und der Standardwert gibt eine Zahl beginnend bei 0 für Sonntag zurück – nicht einen Montag-basierten Bereich von 1–7.

ModusKonstanteRückgabewertBeispiel für einen Donnerstag
0 (Standard)CAL_DOW_DAYNOGanzzahl 06, wobei 0 = Sonntag und 6 = Samstag4
1CAL_DOW_LONGVollständiger englischer Wochentag (string)"Thursday"
2CAL_DOW_SHORTDreistellige Abkürzung (string)"Thu"

Verwenden Sie die benannten Konstanten (CAL_DOW_LONG usw.) anstelle der rohen Zahlen, um Ihren Code lesbar zu halten.

Verwendung von jddayofweek() in PHP

Konvertieren Sie zunächst Ihr Zieldatum mit cal_to_jd() in eine Julianische Tageszahl. Diese Funktion nimmt den Kalendertyp sowie separate ganze Zahlen für Monat, Tag und Jahr (in dieser Reihenfolge) entgegen. Übergeben Sie dann das Ergebnis mit dem gewünschten Modus an jddayofweek().

Die Funktion jddayofweek() in PHP

<?php
// Convert the Gregorian date 2023-03-02 to a Julian day number.
// Argument order is: calendar, month, day, year.
$julianDay = cal_to_jd(CAL_GREGORIAN, 3, 2, 2023);

// Mode 0 (default): integer, 0 = Sunday ... 6 = Saturday
echo "Day number: " . jddayofweek($julianDay, CAL_DOW_DAYNO) . "\n";

// Mode 1: full weekday name
echo "Full name:  " . jddayofweek($julianDay, CAL_DOW_LONG) . "\n";

// Mode 2: abbreviated weekday name
echo "Short name: " . jddayofweek($julianDay, CAL_DOW_SHORT) . "\n";
?>

Dies gibt aus:

Day number: 4
Full name:  Thursday
Short name: Thu

Der 2. März 2023 war ein Donnerstag, daher gibt der Standardmodus 4 zurück (Sonntag ist 0, also ist Donnerstag der vierte Index), CAL_DOW_LONG gibt "Thursday" zurück und CAL_DOW_SHORT gibt "Thu" zurück.

Häufige Fallstricke

  • Der Standard ist Sonntag-basiert, nicht Montag-basiert. Modus 0 gibt 0 für Sonntag zurück, nicht 1 für Montag. Wenn Sie ISO-8601-Nummerierung erwarten (Montag = 1), fügen Sie einen eigenen Versatz hinzu oder verwenden Sie DateTime.
  • Die calendar-Erweiterung muss aktiviert sein. jddayofweek() und cal_to_jd() befinden sich in PHPs calendar-Erweiterung. Sie wird mit den meisten Builds mitgeliefert, kann aber deaktiviert sein.
  • Falsche Argumentreihenfolge in cal_to_jd(). Die Reihenfolge ist (calendar, month, day, year), nicht (year, month, day). Das Vertauschen von Monat und Tag erzeugt stillschweigend den falschen Wochentag.

Fazit

jddayofweek() ordnet einer Julianischen Tageszahl einen Wochentag zu, entweder als Sonntag-basierten Index (CAL_DOW_DAYNO), als vollständigen Namen (CAL_DOW_LONG) oder als Abkürzung (CAL_DOW_SHORT). In Kombination mit cal_to_jd() können Sie damit Wochentage für historische, astronomische oder kalenderübergreifende Datumsarbeiten genau bestimmen.

Übungen

Übung
Was macht die Funktion jddayofweek() in PHP?
Was macht die Funktion jddayofweek() in PHP?
Was this page helpful?