Wie erhalte ich das aktuelle Jahr in PHP? 5 einfache Methoden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum ist die Frage nach dem „aktuellen Jahr“ so beliebt?

\n\n

Man sollte meinen, es könnte nicht einfacher sein, PHP zu fragen: „Hey, welches Jahr haben wir?“ – und eine Antwort zu bekommen. Aber weit gefehlt! Die Frage „How do I use PHP to get the current year?“ hat auf Stack Overflow Zehntausende von Aufrufen gesammelt. Warum?

\n\n

Erstens ist es eine der ersten Aufgaben, auf die ein Anfänger stößt: „© 2024“ in der Fußzeile der Website anzeigen, eine dynamische Jahresliste in einem Registrierungsformular erstellen oder einfach das Alter eines Benutzers überprüfen. Zweitens bietet PHP mehrere verschiedene Ansätze, und jeder hat seine eigenen Nuancen. Drittens (und das ist das Heimtückischste) verwechseln Anfänger oft date('y') und date('Y') – und erhalten nicht 2024, sondern 24. Und dann wundern sie sich, warum die Website „im letzten Jahrhundert lebt“.

\n\n

In diesem Artikel werden wir alle gängigen Methoden durchgehen, um das aktuelle Jahr in PHP zu erhalten, von den offensichtlichsten bis zu den fortgeschritteneren. Sie erfahren, wie Sie typische Fehler vermeiden, welche Methode Sie für Ihr Projekt wählen und wie Sie mit dem Jahr in verschiedenen Zeitzonen arbeiten. Los geht's!

\n\n

1. Die einfachste Methode: Die Funktion date()

\n\n

Der König aller PHP-Funktionen für die Arbeit mit Daten ist date(). Sie akzeptiert ein Format und optional einen Zeitstempel. Wenn kein Zeitstempel angegeben wird, wird die aktuelle Serverzeit verwendet.

\n\n

So erhalten Sie das 4-stellige Jahr (2024, 2025…)

\n
<?php\necho date('Y'); // Gibt aus: 2024\n?>
\n\n

Das Zeichen Y (Großbuchstabe) ist die vollständige Jahresdarstellung, 4 Ziffern. Es sollte in 99% der Fälle verwendet werden.

\n\n

So erhalten Sie das 2-stellige Jahr (24, 25…)

\n
<?php\necho date('y'); // Gibt aus: 24\n?>
\n\n

Das Zeichen y (Kleinbuchstabe) ist das Jahr mit zwei Ziffern. Verwenden Sie es nur, wenn Sie ein Spielzeugprogramm schreiben oder mit Legacy-Code arbeiten (der wahrscheinlich bereits aufgrund von Y2K-ähnlichen Problemen defekt ist).

\n\n

Praktisches Beispiel: Copyright in der Fußzeile

\n
<footer>\n    <p>&copy; 2010–<?php echo date('Y'); ?> Meine Super-Website</p>\n</footer>
\n\n

Dieser Code aktualisiert automatisch das Jahr in der Fußzeile – Sie müssen es nicht jeden Januar korrigieren. Ziemlich cool, oder?

\n\n

2. Objektorientierter Ansatz: Die Klasse DateTime

\n\n

Wenn Sie modernes PHP (7.x, 8.x) schreiben, verwenden Sie besser die Klasse DateTime. Sie ist flexibler, bequemer für Manipulationen und leichter lesbar.

\n\n

Jahr über DateTime erhalten

\n
<?php\n$now = new DateTime();\necho $now->format('Y'); // 2024\n?>
\n\n

Die Methode format() funktioniert genauso wie date(), jedoch auf einem Objekt. Der Vorteil ist, dass Sie das Datum leicht ändern, Tage, Monate hinzufügen und dann erneut formatieren können.

\n\n

Erweitertes Beispiel: Jahr aus einem bestimmten Datum

\n
<?php\n$date = new DateTime('2023-03-15');\necho $date->format('Y'); // 2023\n?>
\n\n

Dies ist nützlich, wenn Sie mit einer Datenbank arbeiten und Daten als Zeichenfolgen speichern.

\n\n

3. Der gute alte strftime() (aber mit Einschränkung)

\n\n

Die Funktion strftime() ist eine weitere Möglichkeit, das Jahr zu erhalten. Sie ist gut, weil sie das Locale (Sprache und regionale Einstellungen) berücksichtigt. Zum Beispiel kann sie in der russischen Locale den Monatsnamen auf Russisch ausgeben.

\n\n

Beispiel mit strftime

\n
<?php\nsetlocale(LC_TIME, 'ru_RU.utf8');\necho strftime('%Y'); // 2024\n?>
\n\n

Aber es gibt einen wichtigen Punkt: Seit PHP 8.1 ist die Funktion strftime() als veraltet (deprecated) markiert. Sie kann zwar noch verwendet werden, könnte aber in zukünftigen Versionen entfernt werden. Wenn Sie neuen Code schreiben, verwenden Sie besser DateTime.

\n\n

4. Die Variable $_SERVER['REQUEST_TIME']

\n\n

Manchmal muss man das Jahr „im Vorbeigehen“ erhalten, ohne Objekte zu erstellen. Dafür kann man das superglobale Array $_SERVER verwenden.

\n\n


                
                

Blogs

Buchempfehlungen