Overview
KB
Technical FAQ
PHP Manual
CSS2 Manual
HTML Manual
JS Guide
JS Reference
PhpDock Manual
Nu-Coder Manual
PhpExpress Manual
PHP Joomla
Development
Learn PHP
 
<DateTimeImmutable::setMicrosecondDateTimeImmutable::setTimestamp>
^DateTimeImmutableLast updated: Mon, 26 Oct 2026

DateTimeImmutable::setTime

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

DateTimeImmutable::setTime — Sets the time

Description

#[\NoDiscard(message: "as DateTimeImmutable::setTime() does not modify the object itself")]
public function DateTimeImmutable::setTime(
    int $hour,
    int $minute,
    int $second = 0,
    int $microsecond = 0
): DateTimeImmutable

Returns a new DateTimeImmutable object with the time set to the given time.

Parameters

hour

Hour of the time.

minute

Minute of the time.

second

Second of the time.

microsecond

Microsecond of the time.

Return Values

Returns a new DateTimeImmutable object with the modified data.

Changelog

Version Description
8.1.0 The behaviour with double existing hours (during the fall-back DST transition) changed. Previously PHP would pick the second occurrence (after the DST transition), instead of the first occurrence (before DST transition).
7.1.0 The microsecond parameter was added.

Examples

Example #1 DateTimeImmutable::setTime() example

Object-oriented style

<?php
$date = new DateTimeImmutable('2001-01-01');

$newDate = $date->setTime(14, 55);
echo $newDate->format('Y-m-d H:i:s') . "\n";

$newDate = $date->setTime(14, 55, 24);
echo $newDate->format('Y-m-d H:i:s') . "\n";
?>

The above example will output something similar to:

2001-01-01 14:55:00
2001-01-01 14:55:24

Example #2 Values exceeding ranges are added to their parent values

<?php
$date = new DateTimeImmutable('2001-01-01');

$newDate = $date->setTime(14, 55, 24);
echo $newDate->format('Y-m-d H:i:s') . "\n";

$newDate = $date->setTime(14, 55, 65);
echo $newDate->format('Y-m-d H:i:s') . "\n";

$newDate = $date->setTime(14, 65, 24);
echo $newDate->format('Y-m-d H:i:s') . "\n";

$newDate = $date->setTime(25, 55, 24);
echo $newDate->format('Y-m-d H:i:s') . "\n";
?>

The above example will output:

2001-01-01 14:55:24
2001-01-01 14:56:05
2001-01-01 15:05:24
2001-01-02 01:55:24

See Also


<DateTimeImmutable::setMicrosecondDateTimeImmutable::setTimestamp>
^DateTimeImmutableLast updated: Mon, 26 Oct 2026