W3docs

idate()

idate() ist eine eingebaute PHP-Funktion, die einzelne Datums- oder Zeitinformationen aus einem Unix-Zeitstempel extrahiert und als Integer zurückgibt.

idate() ist eine eingebaute PHP-Funktion, die eine einzelne Datums- oder Zeitinformation aus einem Unix-Zeitstempel extrahiert und als Integer zurückgibt. Der Name steht für integer date. Anders als date(), das aus einem oder mehreren Formatzeichen einen formatierten String aufbaut, akzeptiert idate() genau ein Formatzeichen und liefert eine einfache Zahl zurück, mit der man sofort rechnen kann.

Diese Seite behandelt die Syntax, die von idate() unterstützten Formatzeichen, ausführbare Beispiele, die Unterschiede zu date() sowie die zu beachtenden Stolperfallen.

Syntax

idate(string $format, ?int $timestamp = null): int|false
  • $format — ein einzelnes Formatzeichen (siehe Tabelle unten). Wird ein String mit mehr als einem Zeichen übergeben, gibt die Funktion eine Warnung aus und liefert false.
  • $timestamp — ein optionaler Unix-Zeitstempel (Sekunden seit dem 1. Januar 1970, UTC). Wird er weggelassen, werden das aktuelle Datum und die aktuelle Uhrzeit verwendet.

Die Funktion gibt einen Integer zurück oder false bei einem Fehler.

Formatzeichen

idate() unterstützt eine Teilmenge der Formatzeichen von date() — nur solche, die einen numerischen Wert erzeugen.

CodeRückgabeBeispiel
YVierstellige Jahreszahl2023
yZweistellige Jahreszahl23
mMonatsnummer (1–12)3
nMonatsnummer (wie m)3
dTag des Monats (1–31)5
jTag des Monats (wie d)5
HStunde, 24-Stunden (0–23)17
GStunde, 24-Stunden (wie H)17
iMinuten (0–59)30
sSekunden (0–59)45
NISO-Wochentag (1 = Montag … 7 = Sonntag)7
wWochentag (0 = Sonntag … 6 = Samstag)0
zTag des Jahres, nullbasiert (0–365)63
tAnzahl der Tage im angegebenen Monat31
LSchaltjahr? 1 wenn ja, 0 wenn nein0
UDer Unix-Zeitstempel selbst1678037445

Wichtig: idate() gibt eine Zahl zurück, keinen nullaufgefüllten String. idate('m') für März gibt den Integer 3 zurück, nicht "03". Wenn eine führende Null benötigt wird, verwende stattdessen date('m'), das den String "03" zurückgibt.

Einfaches Beispiel

<?php
// March 5, 2023, 17:30:45
$timestamp = mktime(17, 30, 45, 3, 5, 2023);

echo idate('Y', $timestamp) . "\n"; // 2023
echo idate('m', $timestamp) . "\n"; // 3
echo idate('d', $timestamp) . "\n"; // 5
echo idate('H', $timestamp) . "\n"; // 17
echo idate('i', $timestamp) . "\n"; // 30
echo idate('s', $timestamp) . "\n"; // 45

Da der Rückgabewert ein Integer ist, kann er direkt in Berechnungen und Vergleichen verwendet werden:

<?php
$timestamp = mktime(17, 30, 45, 3, 5, 2023);

if (idate('N', $timestamp) >= 6) {
    echo "It's the weekend.\n";
} else {
    echo "It's a weekday.\n";
}

// March 5, 2023 was a Sunday (N = 7), so this prints:
// It's the weekend.

Die aktuelle Uhrzeit verwenden

Wird das zweite Argument weggelassen, liest idate() das aktuelle Datum und die aktuelle Uhrzeit, was es für schnelle Prüfungen praktisch macht:

<?php
$currentYear = idate('Y');

echo "The current year is {$currentYear}.\n";

// Detect a leap year
echo idate('L') ? "This year is a leap year.\n" : "This year is not a leap year.\n";

idate() vs. date()

idate()date()
FormatlängeNur ein ZeichenBeliebig viele Zeichen
Rückgabetypint (oder false)string
Führende NullenNie (3)Ja, wo definiert ("03")
AnwendungsfallZahl für Berechnungen/Vergleiche benötigtFormatierten, lesbaren String benötigt
<?php
$timestamp = mktime(9, 5, 0, 4, 2, 2024);

echo date('m', $timestamp) . "\n";  // "04"  (string, zero-padded)
echo idate('m', $timestamp) . "\n"; // 4     (integer, no padding)

Wann zu verwenden

idate() sollte verwendet werden, wenn eine Datums-/Zeitkomponente als Zahl benötigt wird — zum Beispiel um einen Zähler aufzubauen, zwei Werte zu vergleichen, in ein Array zu indizieren oder das Ergebnis in weitere Berechnungen einzuspeisen. Wenn das Ziel die Anzeige eines formatierten Datums oder einer Uhrzeit ist, sollte date() verwendet werden (oder strtotime(), um zuerst Text in einen Zeitstempel zu parsen).

Stolperfallen

  • Keine Mehrzeichen-Formate. idate('Y-m-d') funktioniert nicht — es gibt eine Warnung aus und liefert false. idate() muss einmal pro Komponente aufgerufen werden, oder date() muss verwendet werden.
  • Keine führenden Nullen. idate() sollte nicht für Ausgaben mit fester Breite verwendet werden; es entfernt immer die Auffüllung.
  • false sieht aus wie 0. Bei einem Fehler gibt idate() false zurück, was lose gleich 0 ist. Eine strikte Prüfung (=== false) sollte verwendet werden, wenn ein echtes 0 (z. B. ein Sonntag aus w) ein gültiges Ergebnis ist.

Verwandte Funktionen

  • date() — einen Zeitstempel als String formatieren.
  • mktime() — einen Unix-Zeitstempel aus Datums-/Zeitangaben aufbauen.
  • strtotime() — einen englischen Datumsstring in einen Zeitstempel parsen.
  • time() — den aktuellen Unix-Zeitstempel abrufen.

Practice

Practice

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