date_time_set
date_time_set($object, $hour, $minute, $second, $microsecond)
Setzt eine neue Uhrzeit eines DateTime-Objekts und lässt das Datum. Sie ändert das ursprüngliche Objekt und gibt es zurück. Es ist dasselbe wie $object->setTime().
Parameter
- $object – das zu ändernde DateTime-Objekt.
- $hour, $minute – Stunden und Minuten.
- $second – optional, Sekunden. Standard ist 0.
- $microsecond – optional (seit PHP 7.1), Mikrosekunden. Standard ist 0.
Beispiele
$d = date_create("2026-10-05 14:30:45");
date_time_set($d, 8, 0);
echo $d->format("Y-m-d H:i:s"); // 2026-10-05 08:00:00
// Anfang und Ende eines Tages
$from = date_time_set(date_create("2026-10-05 14:30"), 0, 0);
$to = date_time_set(date_create("2026-10-05 14:30"), 23, 59, 59);
echo $from->format("H:i:s") . " – " . $to->format("H:i:s"); // 00:00:00 – 23:59:59
// Werte außerhalb des Bereichs laufen in den nächsten Tag über
$d = date_create("2026-10-05");
date_time_set($d, 25, 70);
echo $d->format("Y-m-d H:i"); // 2026-10-06 02:10
// Mikrosekunden
$d = date_create("2026-10-05 10:00:00.123456");
date_time_set($d, 8, 0, 0, 500);
echo $d->format("H:i:s.u"); // 08:00:00.000500
Worauf Sie achten sollten
- Sekunden und Mikrosekunden, die Sie nicht angeben, werden auf 0 gesetzt, sie behalten nicht ihren ursprünglichen Wert.
- Das Tagesende 23:59:59 schließt den letzten Bruchteil einer Sekunde nicht ein. In Bedingungen (auch in SQL) ist „kleiner als der Anfang des nächsten Tages“ zuverlässiger.
- Eine Uhrzeit, die es wegen der Umstellung auf die Sommerzeit nicht gibt (29. März 2026 um 2:30 in der Zone Europe/Berlin), verschiebt PHP um eine Stunde nach vorn auf 3:30.
- Sie nimmt nur DateTime an, für DateTimeImmutable verwenden Sie die Methode setTime().
Verwandte Funktionen:
date_date_set()
date_create()
date_modify()
date_format()
mktime()