Zum Inhalt springen

PHP strtotime-Funktion: Datums- und Zeitparsen verstehen

In der PHP-Programmierung ist der Umgang mit Datums- und Zeitangaben eine häufige Aufgabe, die aufgrund der verschiedenen Formate und Zeitzonen, die in unterschiedlichen Systemen und Anwendungen verwendet werden, herausfordernd sein kann. Die strtotime-Funktion ist ein leistungsstarkes Tool, das Entwicklern das einfache Parsen und Manipulieren von Datums- und Zeitzeichenfolgen ermöglicht. Allerdings erfordert sie auch ein gutes Verständnis ihrer Syntax und Optionen, um Fehler und unerwartete Ergebnisse zu vermeiden. In diesem Artikel werden wir die strtotime-Funktion und ihre Anwendung im Detail untersuchen und Beispiele sowie Tipps bereitstellen, die Ihnen helfen können, Ihre PHP-Programmierungskenntnisse zu verbessern.

Was ist die strtotime-Funktion?

Die strtotime-Funktion ist eine integrierte PHP-Funktion, die eine Zeichenfolgendarstellung eines Datums und/oder einer Uhrzeit in einen Unix-Timestamp umwandelt. Dabei handelt es sich um einen numerischen Wert, der die seit dem 1. Januar 1970, 00:00:00 UTC (Coordinated Universal Time) vergangenen Sekunden angibt. Der Unix-Timestamp ist ein weit verbreitetes Format zum Speichern und Bearbeiten von Datums- und Zeitangaben in vielen Programmiersprachen und Systemen und ermöglicht einen einfachen Vergleich, eine einfache Berechnung und Formatierung von Datums- und Zeitwerten.

Die Syntax der strtotime-Funktion sieht wie folgt aus:

Die Syntax der strtotime()-Funktion

php
<?php

strtotime ( string $time [, int $now = time() ] ) : int|false

wobei $time die Eingabezeichenfolge ist, die das zu parsende Datum und/oder die Uhrzeit enthält, und $now ein optionaler Parameter ist, der den Referenz-Timestamp für relative Berechnungen angibt. Die Funktion gibt einen Unix-Timestamp zurück, wenn die Eingabezeichenfolge gültig ist, oder false, wenn ein Fehler auftritt.

Wie verwendet man die strtotime-Funktion?

Die strtotime-Funktion unterstützt eine breite Palette von Eingabeformaten und Modifikatoren, die kombiniert werden können, um verschiedene Datums- und Zeitangaben zu parsen. Zu den häufigsten Format- und Modifikatortypen gehören:

  • Datumsformate: YYYY-MM-DD, MM/DD/YYYY, DD-MM-YYYY, YYYY.MM.DD usw.
  • Uhrzeitformate: HH:MM:SS, HH:MM, H:M:S AM/PM, HH:MM:SS +/-HHMM usw.
  • Zeitverschiebungen: +HHMM, -HHMM, Z usw.
  • Relative Angaben: now, yesterday, today, tomorrow, last/next day/week/month/year, +/- N days/weeks/months/years, first/last day/weekday/week/month/year of month/year usw.

Um die strtotime-Funktion zu verwenden, müssen Sie eine Zeichenfolge übergeben, die eines oder mehrere dieser Formate und Modifikatoren enthält. Die Funktion versucht dann, diese zu interpretieren und in einen Unix-Timestamp umzuwandeln. Hier sind einige Beispiele:

Wie verwendet man die strtotime-Funktion?

php
<?php

$timestamp = strtotime("2023-03-03"); // returns a Unix timestamp
$timestamp = strtotime("03/03/2023 12:34:56"); // returns a Unix timestamp
$timestamp = strtotime("2023.03.03 3:45:00 PM -0800"); // returns a Unix timestamp
$timestamp = strtotime("last Sunday"); // returns a Unix timestamp (assuming today is March 3, 2023)
echo $timestamp = strtotime("next month", strtotime("2023-03-15")); // returns a Unix timestamp

Wie Sie sehen können, kann die strtotime-Funktion verschiedene Eingabeformate und relative Angaben verarbeiten. Es ist jedoch wichtig zu beachten, dass das Verhalten der Funktion je nach Systemzeitzone, PHP-Version sowie der Syntax und dem Kontext der Eingabezeichenfolge variieren kann. Daher wird empfohlen, die strtotime-Funktion mit Vorsicht einzusetzen und die Ausgabe vor der Verwendung in Produktionscode stets zu testen und zu validieren.

Tipps und Best Practices

Hier sind einige Tipps und Best Practices, die Sie bei der Verwendung der strtotime-Funktion in Ihrem PHP-Code beachten sollten:

  1. Benutzereingaben immer bereinigen und validieren: Da die strtotime-Funktion Benutzereingaben als Zeichenfolge akzeptiert, ist es wichtig sicherzustellen, dass die Eingaben sauber und sicher zu verwenden sind. Sie können Funktionen wie trim, strip_tags, htmlspecialchars sowie reguläre Ausdrücke verwenden, um unerwünschte Zeichen zu entfernen und Injektionsangriffe zu verhindern.
  2. Explizite Formate und Zeitzonen verwenden: Um Mehrdeutigkeiten und Fehler zu vermeiden, wird empfohlen, explizite Datums- und Uhrzeitformate wie ISO 8601 zu verwenden und die Zeitzone explizit anzugeben, entweder als Zeichenfolge oder als DateTimeZone-Objekt. Dies kann mit Funktionen wie date, gmdate, DateTime, DateTimeImmutable und DateTimeZone erreicht werden.
  3. Code testen und debuggen: Um sicherzustellen, dass Ihre strtotime-Funktion wie beabsichtigt funktioniert, sollten Sie sie mit verschiedenen Eingabezeichenfolgen, Randfällen und Szenarien testen und die Ausgabe mit Ihren Erwartungen abgleichen. Sie können Tools wie var_dump, print_r und assert verwenden, um Ihren Code zu debuggen und Fehler zu erkennen.
  4. Alternative Datums- und Zeitbibliotheken in Betracht ziehen: Obwohl die strtotime-Funktion ein praktisches und leistungsstarkes Tool ist, weist sie einige Einschränkungen und Eigenheiten auf, die in bestimmten Situationen zu Problemen führen können. Daher sollten Sie in Erwägung ziehen, alternative Datums- und Zeitbibliotheken wie Carbon oder Chronos zu verwenden, die mehr Funktionen und Flexibilität bieten.

Hinweis zu modernem PHP: Für neue Projekte werden die Klassen DateTime und DateTimeImmutable aufgrund ihrer besseren Zuverlässigkeit, objektorientierten Struktur und expliziten Zeitbehandlung dringend gegenüber strtotime empfohlen. Verwenden Sie strtotime vorwiegend für Legacy-Code oder einfache relative Datumsberechnungen.

Fazit

In diesem Artikel haben wir die strtotime-Funktion in PHP und ihre Anwendung zum Parsen und Manipulieren von Datums- und Zeitzeichenfolgen untersucht. Wir haben gesehen, wie die Funktion funktioniert, welche Formate und Modifikatoren sie unterstützt und welche Tipps und Best Practices bei der Verwendung in Ihrem Code zu beachten sind. Durch die Anwendung dieser Prinzipien können Sie Ihre PHP-Programmierungskenntnisse verbessern und zuverlässigeren Code zur Datumsverarbeitung schreiben. Denken Sie daran, Benutzereingaben stets zu validieren und zu bereinigen, explizite Formate und Zeitzonen zu verwenden, Ihren Code zu testen und zu debuggen sowie bei Bedarf alternative Bibliotheken in Betracht zu ziehen. Viel Erfolg beim Coden!


Praxis

Was ist der Zweck der 'strtotime'-Funktion in PHP?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.