Start · Sprachen · PHP · Referenz · jddayofweek

jddayofweek

Funktion

Berechnet den Wochentag eines Julianischen Tagesdatums und gibt ihn je nach Modus als Zahl oder Zeichenkette zurück.

seit PHP 4.0.0 Kategorie: date

Signatur

jddayofweek(int $julian_day, int $mode = CAL_DOW_DAYNO): int|string

Beschreibung

jddayofweek() ermittelt den Wochentag für ein Julianisches Tagesdatum (Julian Day Number, JDN). Das Julianische Tagesdatum ist eine fortlaufende Tageszahl, die in der Astronomie und Kalenderrechnung verwendet wird und sich von dem im täglichen Gebrauch bekannten Julianischen Kalender unterscheidet.

Über den Parameter mode kann gesteuert werden, in welcher Form der Wochentag zurückgegeben wird: als numerischer Wert (0 = Sonntag bis 6 = Samstag), als vollständiger englischer Name oder als abgekürzter englischer Name. Die verfügbaren Moduskonstanten sind CAL_DOW_DAYNO (0), CAL_DOW_LONG (1) und CAL_DOW_SHORT (2).

Diese Funktion ist besonders nützlich in Verbindung mit anderen Julianischen-Datum-Konvertierungsfunktionen wie gregoriantojd(), unixtojd() oder cal_to_jd(), um nach einer Kalenderkonvertierung den Wochentag zu bestimmen.

Die Funktion ist Teil der Calendar-Erweiterung, die bei den meisten PHP-Installationen standardmäßig aktiviert ist.

Parameter

Name Typ Default Beschreibung
$julian_day Pflicht int Die Julianische Tageszahl (Julian Day Number), für die der Wochentag berechnet werden soll.
$mode int CAL_DOW_DAYNO Bestimmt das Rückgabeformat: CAL_DOW_DAYNO (0) = numerischer Wert (0 = Sonntag, 6 = Samstag), CAL_DOW_LONG (1) = vollständiger englischer Wochentagsname, CAL_DOW_SHORT (2) = abgekürzter englischer Wochentagsname.

Rückgabewert

Typ
int|string
Beschreibung
Bei CAL_DOW_DAYNO wird eine ganze Zahl von 0 (Sonntag) bis 6 (Samstag) zurückgegeben. Bei CAL_DOW_LONG ein vollständiger englischer Wochentagsname (z. B. "Monday"), bei CAL_DOW_SHORT ein dreistelliger Kurzname (z. B. "Mon").

Beispiele

Wochentag eines gregorianischen Datums bestimmen

<?php
// Heutiges Datum (oder ein festes Datum) in eine Julianische Tageszahl umwandeln
$jd = gregoriantojd(6, 15, 2024); // 15. Juni 2024

// Numerischer Wochentag (0 = Sonntag, 6 = Samstag)
$dayNo = jddayofweek($jd, CAL_DOW_DAYNO);
echo "Numerisch: " . $dayNo . PHP_EOL;

// Vollständiger englischer Name
$dayLong = jddayofweek($jd, CAL_DOW_LONG);
echo "Vollständig: " . $dayLong . PHP_EOL;

// Abgekürzter englischer Name
$dayShort = jddayofweek($jd, CAL_DOW_SHORT);
echo "Abgekürzt: " . $dayShort . PHP_EOL;
Numerisch: 6 Vollständig: Saturday Abgekürzt: Sat

Wochentag für Unix-Timestamp berechnen

<?php
// Unix-Timestamp in Julianische Tageszahl umwandeln
$timestamp = mktime(0, 0, 0, 1, 1, 2024); // 1. Januar 2024
$jd = unixtojd($timestamp);

$wochentag = jddayofweek($jd, CAL_DOW_LONG);
echo "Der 1. Januar 2024 war ein: " . $wochentag;
Der 1. Januar 2024 war ein: Monday

Deutschen Wochentagsnamen aus numerischem Wert ableiten

<?php
$deutscheWochentage = [
    0 => 'Sonntag',
    1 => 'Montag',
    2 => 'Dienstag',
    3 => 'Mittwoch',
    4 => 'Donnerstag',
    5 => 'Freitag',
    6 => 'Samstag',
];

$jd = gregoriantojd(12, 24, 2024); // 24. Dezember 2024
$tagNummer = jddayofweek($jd, CAL_DOW_DAYNO);

echo "Heiligabend 2024 fällt auf einen: " . $deutscheWochentage[$tagNummer];
Heiligabend 2024 fällt auf einen: Dienstag

// Wichtig · Fallstricke

Hinweis zur Wochentagnummerierung: Im Gegensatz zu manchen anderen PHP-Funktionen (z. B. date('w', ...)) beginnt die Zählung bei jddayofweek() ebenfalls mit 0 für Sonntag, was dem amerikanischen Standard entspricht. Bei der Verwendung in europäischen Kontexten (Woche beginnt mit Montag) muss die Zuordnung entsprechend angepasst werden.

Nur englische Namen: Die Funktionsparameter CAL_DOW_LONG und CAL_DOW_SHORT liefern ausschließlich englische Wochentagsnamen. Für lokalisierte Namen empfiehlt sich die Kombination mit CAL_DOW_DAYNO und einer eigenen Übersetzungstabelle.

Die Calendar-Erweiterung muss aktiviert sein. Auf einigen minimal konfigurierten Systemen muss ggf. die Extension calendar manuell in der php.ini aktiviert oder nachinstalliert werden.