Die Unixzeit, auch Unix-Timestamp genannt, ist die Anzahl der Sekunden seit dem 1. Januar 1970 um 00:00:00 UTC und dient als universelles, zeitzonenunabhängiges Format für Datums- und Zeitangaben in Software.
Was bedeutet das?
Der 1. Januar 1970 um 00:00:00 UTC wird als „Unix-Epoche“ oder „POSIX-Epoche“ bezeichnet. Dieses Datum wurde gewählt, weil das Unix-Betriebssystem Ende der 1960er-Jahre entwickelt wurde und Zeitangaben in einem einfach berechenbaren Format gespeichert werden sollten. Eine einzelne ganze Zahl genügt, um jeden beliebigen Zeitpunkt darzustellen. Der Wert 0 entspricht dem Epoch-Zeitpunkt selbst, 86400 entspricht einem Tag später, negative Werte beschreiben Zeitpunkte vor 1970.
Der große Vorteil der Unixzeit ist ihre Zeitzonenunabhängigkeit. Timestamps werden immer relativ zu UTC gespeichert. Die Umrechnung in eine lesbare lokale Zeit erfolgt erst bei der Darstellung, indem die Zeitzonenverschiebung addiert oder subtrahiert wird. Damit lassen sich Zeitpunkte aus verschiedenen Zeitzonen problemlos vergleichen: Zwei Timestamps können einfach subtrahiert werden, um die Differenz in Sekunden zu erhalten, ohne Sommer-/Winterzeit-Komplikationen befürchten zu müssen.
In PHP, das WordPress zugrunde liegt, gibt die Funktion time() den aktuellen Unix-Timestamp zurück. Die Funktion strtotime() wandelt einen Datums-String in einen Timestamp um, und date() oder wp_date() wandeln umgekehrt einen Timestamp in ein lesbares Datum. WordPress speichert Beitragsdaten in der Datenbank als MySQL-DateTime-Format, verarbeitet intern aber häufig Timestamps. Cron-Jobs in WordPress arbeiten ebenfalls mit Timestamps: wp_schedule_event() nimmt einen Timestamp entgegen, der angibt, wann ein geplanter Task erstmals ausgeführt werden soll.
Beispiel aus der Praxis
Ein WordPress-Plugin möchte eine Benachrichtigungs-E-Mail genau 7 Tage nach der Benutzerregistrierung versenden. Der Registrierungszeitpunkt wird als Unix-Timestamp in einem User-Meta-Feld gespeichert, z. B. 1748304000. Um den Sendezeitpunkt zu berechnen, addiert das Plugin einfach 7 * 24 * 60 * 60 (sieben Tage in Sekunden) zum gespeicherten Timestamp: 1748304000 + 604800 = 1748908800. Dieser Ziel-Timestamp wird dann an wp_schedule_single_event() übergeben. Die Rechnung funktioniert unabhängig davon, in welcher Zeitzone der Server läuft oder ob in diesen sieben Tagen eine Zeitumstellung liegt.
Häufiger Fehler
Ein bekanntes Problem ist das Jahr-2038-Problem bei 32-Bit-Systemen. Auf Systemen mit 32-Bit-Integer kann der Unix-Timestamp maximal den Wert 2.147.483.647 erreichen, was dem 19. Januar 2038 um 03:14:07 UTC entspricht. Danach würde der Wert überlaufen und auf eine negative Zahl springen, was Datumsberechnungen korrumpiert. Moderne 64-Bit-Systeme und aktuelle PHP-Versionen sind nicht betroffen, da sie 64-Bit-Integer verwenden und Timestamps bis weit ins Jahr 292 Milliarden darstellen können. Wenn Sie jedoch alte 32-Bit-Server oder Legacy-Datenbankfelder vom Typ INT(11) für Timestamps verwenden, sollten Sie auf 64-Bit-Infrastruktur und BIGINT-Datenbankfelder migrieren.