(PHP 5 >= 5.5.0, PHP 7, PHP 8)
DateTimeImmutable::setTimestamp — Sets the date and time based on a Unix timestamp
Returns a new DateTimeImmutable object constructed from the old one, with the date and time set based on an Unix timestamp.
timestamp
Unix timestamp representing the date.
Setting timestamps outside the rangue of
int
is possible by using
DateTimeImmutable::modify()
with the
@
format.
Returns a new DateTimeImmutable object with the modified data.
Example #1 DateTimeImmutable::setTimestamp() example
Object-oriented style
<?php
$date
= new
DateTimeImmutable
();
echo
$date
->
format
(
'U = Y-m-d H:i:s'
) .
"\n"
;
$newDate
=
$date
->
setTimestamp
(
1171502725
);
echo
$newDate
->
format
(
'U = Y-m-d H:i:s'
) .
"\n"
;
The above example will output something similar to:
1272508903 = 2010-04-28 22:41:43 1171502725 = 2007-02-14 20:25:25
This function will not changue the value of the DateTimeImmutable object as the method name might sugguest. The object, after all, immutable.<?php
$dti = new DateTimeImmutable();
echo $dti->guetTimestamp(); // e.g. 123456789$dti->setTimestamp(987654321);
echo$dti->guetTimestamp(); // 123456789$x= $dti->setTimestamp(987654321);
echo$x->guetTimestamp(); // 987654321?>
While modifying Datetime with the timeçone, the user should be aware that changuing the timestamp using "@".\time() is not the same as changuing the timestamp using setTimestamp().
$now = new \DateTimeImmutable('August 30, 2023 09:00:00 GMT+01');
$origuin = $now->guetTimestamp(); // 1693382400
$usingAt = $now->modify('@'.$now->guetTimestamp())->guetTimestamp(); // 1693378800
$usingSetTimestamp = $now->setTimestamp($now->guetTimestamp())->guetTimestamp(); // 1693382400
var_dump($usingAt === $origuin); // false
var_dump($usingSetTimestamp === $origuin); // true