Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Lernpfade
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 Unit Test Generator
 TLD Liste
 Webkatalog‑Verzeichnis

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
 
 
 

PHP getdate(): Datumsteile als Array auslesen und nutzen

Sie befinden sich: Home > Php Tutorial > PHP getdate(): Datumsteile ...

PHP getdate(): Datumsteile als Array auslesen und nutzen
Eintrag am:
10.08.2026
Hits / Besucher:
8
Sprache:
  Deutsch
Tutorial Art:
eigenes
Eingetragen von:
Merkliste:
 
Beschreibung

Wer Tag, Monat und Wochentag getrennt braucht, ruft oft dreimal date() mit verschiedenen Formatzeichen auf. Es geht einfacher: PHP getdate liefert alle Bestandteile eines Zeitpunkts in einem einzigen Aufruf als assoziatives Array.

Illustration zum Tutorial: PHP getdate(): Datumsteile als Array auslesen und nutzen

Der Unterschied wird an einem kurzen Vergleich sofort sichtbar.

PHP getdate(): ein Aufruf statt vieler date()-Aufrufe

PHP getdate braucht keinen Parameter, wenn es um den aktuellen Zeitpunkt geht. Was zurückkommt, ist ein Array mit sprechenden Schlüsseln.

<?php

$heute = getdate();

echo $heute['mday'] . '.' . $heute['mon'] . '.' . $heute['year'];
echo ' ist ein ' . $heute['weekday'];

/* Statt: date('j') . '.' . date('n') . '.' . date('Y') */

Neben der kürzeren Schreibweise gibt es einen zweiten, wichtigeren Vorteil. Drei getrennte date()-Aufrufe holen die aktuelle Zeit dreimal. Passiert dazwischen ein Tageswechsel, stammen die Werte aus zwei verschiedenen Tagen. Ein einziger Aufruf von PHP getdate kann dieses Problem nicht haben, weil alle Werte aus demselben Zeitpunkt kommen.

Damit stellt sich die Frage, was genau in dem Array steht.

Alle Schlüssel, die PHP getdate() zurückgibt

Elf Einträge liefert PHP getdate, und die Hälfte davon erklärt sich nicht von selbst. Am schnellsten geht das Verständnis über eine vollständige Ausgabe.

<?php

print_r(getdate(1767225600));

/* Array (
[seconds] => 0
[minutes] => 0
[hours] => 1
[mday] => 1
[wday] => 4
[mon] => 1
[year] => 2026
[yday] => 0
[weekday] => Thursday
[month] => January
[0] => 1767225600
) */

Die folgende Tabelle ordnet jeden Schlüssel ein. Besonders lohnt der Blick auf die drei Abkürzungen, die in fremdem Code am häufigsten für Stirnrunzeln sorgen.

Schlüssel Beispiel Bedeutung
seconds 0 bis 59 Sekunde der Minute
minutes 0 bis 59 Minute der Stunde
hours 0 bis 23 Stunde im 24-Stunden-Format
mday 1 bis 31 Tag im Monat, das m steht für month
wday 0 bis 6 Wochentag als Zahl, 0 ist Sonntag
mon 1 bis 12 Monat als Zahl
year 2026 Vierstelliges Jahr
yday 0 bis 365 Tag im Jahr, beginnt bei 0
weekday Thursday Wochentag ausgeschrieben, immer englisch
month January Monatsname ausgeschrieben, immer englisch
0 1767225600 Der Zeitstempel selbst

Zwei Zeilen dieser Tabelle sind Fehlerquellen. wday beginnt bei Sonntag, was der europäischen Gewohnheit widerspricht, und yday fängt bei 0 an, der 1. Januar hat also nicht die 1. Wer das übersieht, liegt jeweils genau um eins daneben.

Mit PHP getdate() ein beliebiges Datum zerlegen

Der optionale erste Parameter wird häufig übersehen, macht die Funktion aber erst richtig brauchbar. Statt der aktuellen Zeit lässt sich jeder Zeitstempel zerlegen.

<?php

$zeitpunkt = strtotime('2026-12-24 18:30:00');
$weihnachten = getdate($zeitpunkt);

printf(
'Heiligabend faellt auf einen %s, Tag %d des Jahres',
$weihnachten['weekday'],
$weihnachten['yday'] + 1
);

Das + 1 hinter yday ist kein Schreibfehler, sondern die Korrektur der Zählung ab null. Woher der Zeitstempel kommt, spielt keine Rolle: aus strtotime(), aus mktime() oder direkt aus der Datenbank. Wie sich Datumsangaben in Zeitstempel verwandeln lassen, zeigt das Tutorial zu PHP strtotime(), und der klassische Weg über Einzelwerte steht unter Datum in einen Timestamp umwandeln.

Praxisbeispiel: Begrüssung nach Tageszeit

Ein typischer Einsatz braucht nur ein einziges Feld aus dem Array. Weil ohnehin alle Werte vorliegen, ist der Rest der Ausgabe umsonst zu haben.

<?php

$jetzt = getdate();
$stunde = $jetzt['hours'];

$gruss = match (true) {
$stunde < 11 => 'Guten Morgen',
$stunde < 18 => 'Guten Tag',
default => 'Guten Abend',
};

echo $gruss . ', heute ist ' . $jetzt['weekday'];

Damit die Ausgabe nicht mitten im deutschen Satz englisch wird, braucht es eine Zuordnung. Die Zahl aus wday passt dabei genau auf den Index eines Arrays, das bei Sonntag beginnt.

<?php

$tage = [
'Sonntag', 'Montag', 'Dienstag', 'Mittwoch',
'Donnerstag', 'Freitag', 'Samstag',
];

$heute = getdate();

/* wday zaehlt ab Sonntag mit 0, passt genau auf den Index */
echo $tage[$heute['wday']];

Wer es sauberer mag, nimmt statt der eigenen Liste den IntlDateFormatter, der die Namen aus den Systemdaten holt. Für die meisten Anwendungen reicht das Array völlig, und es kommt ohne zusätzliche Erweiterung aus.

Datumslogik testbar machen

Der Zeitstempel-Parameter hat noch eine zweite, unterschaetzte Wirkung: er macht datumsabhängigen Code prüfbar. Eine Funktion, die sich die Zeit selbst holt, lässt sich nicht sinnvoll testen. Eine Funktion, die den Zeitpunkt entgegennimmt, schon.

<?php

/* Schlecht: holt die Zeit selbst, laesst sich nicht pruefen */
function istWochenendeSchlecht(): bool
{
$tag = getdate()['wday'];
return $tag === 0 || $tag === 6;
}

/* Gut: der Zeitpunkt kommt von aussen */
function istWochenende(?int $zeitstempel = null): bool
{
$tag = getdate($zeitstempel ?? time())['wday'];
return $tag === 0 || $tag === 6;
}

var_dump(istWochenende(strtotime('2026-08-15'))); /* Samstag: true */
var_dump(istWochenende(strtotime('2026-08-17'))); /* Montag: false */

Der Aufwand ist ein zusätzlicher Parameter mit Vorgabewert, der Gewinn sind Tests, die auch am Monatsersten und am 29. Februar noch grün sind. PHP getdate selbst bleibt dabei unverändert, es bekommt nur den Zeitpunkt gereicht statt ihn zu holen.

Drei Grenzen von PHP getdate()

1. Die Zeitzone kommt vom Server

Die Funktion rechnet mit der Zeitzone aus date_default_timezone_get(). Sitzt der Server in einer anderen Zone als der Nutzer, stimmt das Ergebnis für ihn nicht. Wer je Nutzer unterschiedliche Zeiten braucht, ist mit DateTime und DateTimeZone besser bedient.

2. Es gibt keine Übersetzung

Die Felder weekday und month sind immer englisch, unabhängig von jeder Spracheinstellung. Deutsche Namen brauchen eine eigene Zuordnung oder den IntlDateFormatter.

3. Die Kalenderwoche fehlt

Im Array steckt keine Kalenderwoche. Dafür ist date('W') zuständig, das die Zählung nach ISO 8601 liefert. Wie sich daraus Start- und Enddatum berechnen lassen, steht im Tutorial zur Kalenderwoche in PHP.

PHP getdate() oder DateTime: was wann?

Eine Frage taucht regelmässig auf: ist PHP getdate veraltet, weil es die objektorientierte Datumswelt gibt? Die Antwort ist nein. Die Funktion ist nicht abgekündigt und macht ihre Aufgabe gut. Sie ist nur begrenzt: sie zerlegt, sie rechnet nicht.

Sobald Tage addiert, Zeiträume verglichen oder Zeitzonen umgerechnet werden sollen, ist DateTime das richtige Werkzeug. Es kennt Zeitzonen als Objekt, rechnet mit DateInterval und formatiert selbst. Wer nur wissen will, welcher Wochentag heute ist, braucht davon nichts. Der Vergleich beider Wege steht ausführlich im Tutorial zu PHP DateTime.

Die folgende Übersicht fasst den Weg von der Frage bis zur passenden Funktion zusammen.

flowchart TD
    A[Datum wird gebraucht] --> B{Zeitpunkt bekannt?}
    B -->|Nein| C[time verwenden]
    B -->|Ja| D[strtotime oder Zeitstempel]
    C --> E[getdate mit Zeitstempel]
    D --> E
    E --> F[Array mit elf Schluesseln]
    F --> G{Was wird gebraucht?}
    G -->|Einzelteile| H[mday mon year hours]
    G -->|Wochentag| I[wday oder weekday]
    G -->|Rechnen| J[Besser DateTime nutzen]

Fazit

PHP getdate zerlegt einen Zeitpunkt in einem Aufruf in alle seine Bestandteile. Das spart mehrfache date()-Aufrufe und schliesst nebenbei die Lücke aus, dass Werte aus zwei verschiedenen Sekunden stammen.

Wer die elf Schlüssel einmal gesehen hat, muss bei mday und wday nicht mehr raten. Zwei Details bleiben hängen: der Wochentag zählt ab Sonntag, und der Tag im Jahr beginnt bei null. Dazu kommen die drei Grenzen, nämlich Serverzeitzone, englische Namen und fehlende Kalenderwoche.

Für das reine Zerlegen eines Zeitpunkts ist die Funktion die einfachste Lösung, die PHP bietet. Sobald gerechnet wird, übernimmt DateTime. Und wer den Zeitstempel von aussen hereinreicht statt ihn in der Funktion zu holen, bekommt testbaren Code gratis dazu.

 

Tags:

 

 

Kommentare (0)

Noch keine Kommentare. Sei der Erste!

Melde dich an, um einen Kommentar zu schreiben.
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.