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 liefertfalse.$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.
| Code | Rückgabe | Beispiel |
|---|---|---|
Y | Vierstellige Jahreszahl | 2023 |
y | Zweistellige Jahreszahl | 23 |
m | Monatsnummer (1–12) | 3 |
n | Monatsnummer (wie m) | 3 |
d | Tag des Monats (1–31) | 5 |
j | Tag des Monats (wie d) | 5 |
H | Stunde, 24-Stunden (0–23) | 17 |
G | Stunde, 24-Stunden (wie H) | 17 |
i | Minuten (0–59) | 30 |
s | Sekunden (0–59) | 45 |
N | ISO-Wochentag (1 = Montag … 7 = Sonntag) | 7 |
w | Wochentag (0 = Sonntag … 6 = Samstag) | 0 |
z | Tag des Jahres, nullbasiert (0–365) | 63 |
t | Anzahl der Tage im angegebenen Monat | 31 |
L | Schaltjahr? 1 wenn ja, 0 wenn nein | 0 |
U | Der Unix-Zeitstempel selbst | 1678037445 |
Wichtig:
idate()gibt eine Zahl zurück, keinen nullaufgefüllten String.idate('m')für März gibt den Integer3zurück, nicht"03". Wenn eine führende Null benötigt wird, verwende stattdessendate('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"; // 45Da 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änge | Nur ein Zeichen | Beliebig viele Zeichen |
| Rückgabetyp | int (oder false) | string |
| Führende Nullen | Nie (3) | Ja, wo definiert ("03") |
| Anwendungsfall | Zahl für Berechnungen/Vergleiche benötigt | Formatierten, 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 liefertfalse.idate()muss einmal pro Komponente aufgerufen werden, oderdate()muss verwendet werden. - Keine führenden Nullen.
idate()sollte nicht für Ausgaben mit fester Breite verwendet werden; es entfernt immer die Auffüllung. falsesieht aus wie0. Bei einem Fehler gibtidate()falsezurück, was lose gleich0ist. Eine strikte Prüfung (=== false) sollte verwendet werden, wenn ein echtes0(z. B. ein Sonntag ausw) 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.