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()