php8.5
Home/ Manual/ datetime / datetimeimmutable/ DateTimeImmutable::setTime

DateTimeImmutable::setTime

PHP function Edit on GitHub ✎

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

Sets the time

Description

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

Modifiedobject

Changelog

VersionDescription
8.1.0The 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.0The microsecond parameter was added.

Examples

DateTimeImmutable::setTime() example

Oop

php
<?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:

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

Values exceeding ranges are added to their parent values

php
<?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:

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

Source: reference/datetime/datetimeimmutable/settime.xml · from the official PHP manual (php/doc-en)