Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
 
 
 

PHP date_create() - DateTime-Objekte erstellen und formatieren

Sie befinden sich: Home > Php Tutorial > PHP date_create() -...

PHP date_create() - DateTime-Objekte erstellen und formatieren


Eintrag am:  28.03.2026
Hits / Besucher:  29
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Die Arbeit mit Datum und Uhrzeit gehört zu den häufigsten Aufgaben in der PHP-Entwicklung. Ob Blogbeiträge mit Veröffentlichungsdatum, Buchungssysteme oder Logdateien: Überall werden Datumswerte erzeugt, formatiert und verglichen. Die Funktion date_create() ist der prozedurale Weg, ein DateTime-Objekt in PHP zu erstellen. In diesem Tutorial lernst du die Syntax, die Parameter und die wichtigsten Anwendungsfälle dieser Funktion kennen.

Illustration zum Tutorial: PHP date_create() - DateTime-Objekte erstellen und formatieren

Bevor es an die praktischen Beispiele geht, lohnt sich ein Blick auf die Grundlagen der Funktion und ihre Rolle im Zusammenspiel mit anderen DateTime-Methoden.

Was ist date_create()?

Die Funktion date_create() ist ein Alias für den Konstruktor der DateTime-Klasse. Sie erstellt ein neues DateTime-Objekt, das ein bestimmtes Datum und eine bestimmte Uhrzeit repräsentiert. Das zurückgegebene Objekt kann anschließend mit weiteren PHP-Datumsfunktionen wie date_format(), date_add() oder date_diff() weiterverarbeitet werden.

Im Gegensatz zu älteren Funktionen wie date() oder strtotime() liefert date_create() kein einfaches String- oder Integer-Ergebnis, sondern ein vollwertiges Objekt. Das macht den Code lesbarer und ermöglicht eine saubere Weiterverarbeitung.

Syntax und Parameter

Die vollständige Syntax von date_create() lautet:

<?php

date_create(string $datetime = "now", ?DateTimeZone $timezone = null): DateTime|false

Die Funktion gibt ein DateTime-Objekt zurück. Wenn der übergebene Datumsstring ungültig ist, gibt sie false zurück.

Der Parameter datetime

Der erste Parameter ist ein optionaler Datumsstring. Wird er weggelassen oder auf "now" gesetzt, verwendet PHP das aktuelle Datum mit der aktuellen Uhrzeit. Darüber hinaus werden zahlreiche Formate unterstützt, darunter ISO-8601-Formate wie "2026-12-24", relative Angaben wie "next Monday" oder "+3 days" sowie Unix-Timestamps mit vorangestelltem @-Zeichen.

Der Parameter timezone

Der zweite Parameter akzeptiert ein DateTimeZone-Objekt. Damit lässt sich die Zeitzone festlegen, in der das Datum interpretiert werden soll. Ohne Angabe verwendet PHP die in der php.ini konfigurierte Standard-Zeitzone.

Ein DateTime-Objekt erstellen

Der einfachste Aufruf von date_create() erzeugt ein Objekt mit dem aktuellen Datum und der aktuellen Uhrzeit.

<?php

$datum = date_create();
echo date_format($datum, 'Y-m-d H:i:s');
/* Gibt das aktuelle Datum und die Uhrzeit aus,
z.B. 2026-03-06 14:30:00 */

Du kannst auch einen konkreten Datumsstring übergeben, um ein bestimmtes Datum zu erzeugen.

<?php

$datum = date_create('2026-12-24');
echo date_format($datum, 'd.m.Y');
/* Ausgabe: 24.12.2026 */

$datum2 = date_create('next Monday');
echo date_format($datum2, 'Y-m-d');
/* Gibt den naechsten Montag aus */

PHP versteht dabei sowohl absolute als auch relative Datumsangaben. Relative Angaben wie "last day of this month" oder "+2 weeks" werden automatisch aufgelöst.

Datum formatieren mit date_format()

Nach dem Erstellen eines DateTime-Objekts wird es in der Regel formatiert ausgegeben. Dafür dient die Funktion date_format(). Sie akzeptiert als ersten Parameter das DateTime-Objekt und als zweiten einen Formatierungsstring.

Die wichtigsten Formatierungszeichen sind:

  • Y: vierstellige Jahreszahl (z.B. 2026)
  • m: Monat mit führender Null (01 bis 12)
  • d: Tag mit führender Null (01 bis 31)
  • H: Stunde im 24-Stunden-Format (00 bis 23)
  • i: Minuten mit führender Null (00 bis 59)
  • s: Sekunden mit führender Null (00 bis 59)
  • T: Zeitzonenkürzel (z.B. CET, UTC)

So lassen sich Datumswerte für die Ausgabe im Browser, für Datenbank-Einträge im MySQL-Format oder für Logdateien passend aufbereiten.

Verwandte Funktionen: date_create_from_format()

Wenn der Datumsstring nicht in einem Standardformat vorliegt, hilft date_create_from_format(). Diese Funktion erwartet zusätzlich einen Formatparameter, der beschreibt, wie der Datumsstring aufgebaut ist.

<?php

$datum = date_create_from_format('d/m/Y', '24/12/2026');
echo date_format($datum, 'Y-m-d');
/* Ausgabe: 2026-12-24 */

Das ist besonders nützlich, wenn Datumsangaben aus Formularen oder externen Quellen in nicht standardisierten Formaten vorliegen.

Unterschied zwischen date_create() und new DateTime()

In PHP gibt es zwei Wege, ein DateTime-Objekt zu erzeugen: den prozeduralen Weg mit date_create() und den objektorientierten Weg mit new DateTime().

<?php

/* Prozedural */
$datum1 = date_create('2026-01-15');

/* Objektorientiert */
$datum2 = new DateTime('2026-01-15');

/* Beide liefern ein identisches DateTime-Objekt */

Funktional sind beide Varianten gleichwertig. Der entscheidende Unterschied liegt im Fehlerverhalten: date_create() gibt bei einem ungültigen Datumsstring false zurück, während new DateTime() eine Exception wirft. In modernem, objektorientiertem Code wird meist new DateTime() bevorzugt, weil Exceptions eine sauberere Fehlerbehandlung ermöglichen.

Arbeiten mit Zeitzonen

Zeitzonen spielen eine wichtige Rolle, wenn eine Anwendung Nutzer in verschiedenen Ländern bedient. Mit dem zweiten Parameter von date_create() lässt sich eine Zeitzone explizit festlegen.

<?php

$tz = new DateTimeZone('Europe/Berlin');
$datum = date_create('now', $tz);
echo date_format($datum, 'Y-m-d H:i:s T');
/* Ausgabe z.B.: 2026-03-06 14:30:00 CET */

Ohne explizite Angabe verwendet PHP die Zeitzone aus der php.ini-Konfiguration (Direktive date.timezone). Für konsistente Ergebnisse empfiehlt es sich, die Zeitzone immer bewusst zu setzen, entweder im Code oder in der Serverkonfiguration.

Unix-Timestamps und date_create()

Ein Unix-Timestamp ist eine Ganzzahl, die die Anzahl der Sekunden seit dem 1. Januar 1970 (UTC) repräsentiert. Um aus einem Timestamp ein DateTime-Objekt zu erzeugen, wird dem Wert ein @-Zeichen vorangestellt.

<?php

$datum = date_create('@1609459200');
echo date_format($datum, 'Y-m-d H:i:s');
/* Ausgabe: 2021-01-01 00:00:00 */

Wichtig: Bei Timestamps mit @ wird die Zeitzone automatisch auf UTC gesetzt. Eine eventuell übergebene DateTimeZone wird dabei ignoriert.

Typische Fehler und Stolperfallen

Beim Arbeiten mit date_create() gibt es einige häufige Fehlerquellen:

  • Ungültiger Datumsstring: date_create() gibt bei einem nicht erkennbaren Format false zurück. Eine Prüfung des Rückgabewerts ist daher ratsam.
  • Zeitzonen-Verwirrung: Ohne explizite Zeitzone wird die Standardeinstellung aus php.ini verwendet. Das kann auf verschiedenen Servern zu unterschiedlichen Ergebnissen führen.
  • Verwechslung mit date_create_from_format(): Für nicht standardmäßige Formate wie "24/12/2026" muss date_create_from_format() verwendet werden, da date_create() dieses Format nicht korrekt parst.
  • Timestamps ohne @: Der Wert 1609459200 ohne vorangestelltes @ wird nicht als Timestamp erkannt.
graph TD
    A[date_create] --> B{String gueltig?}
    B -->|Ja| C[DateTime-Objekt]
    B -->|Nein| D[false]
    C --> E[date_format]
    C --> F[date_add]
    C --> G[date_modify]
    C --> H[date_diff]

Fazit

Die Funktion date_create() ist ein einfacher und zuverlässiger Weg, DateTime-Objekte in PHP zu erzeugen. Sie akzeptiert flexible Datumsformate, unterstützt Zeitzonen und lässt sich nahtlos mit Funktionen wie date_format(), date_add() und date_diff() kombinieren. Für modernen PHP-Code bietet sich alternativ die objektorientierte Schreibweise mit new DateTime() an. Unabhängig vom gewählten Stil bildet das DateTime-Objekt die Grundlage für jede professionelle Datumsverarbeitung in PHP.

 

Tags:

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.