DateTimeImmutable::setTimestamp

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

DateTimeImmutable::setTimestamp基于 Unix 时间戳设置日期和时间

描述

public DateTimeImmutable::setTimestamp(int $timestamp): DateTimeImmutable

返回一个新的 DateTimeImmutable 对象,该对象由旧对象构造,日期和时间基于 Unix 时间戳设置。

参数

timestamp

表示日期的 Unix 时间戳。通过使用 DateTimeImmutable::modify()@ 格式,可以设置超出 int 范围的时间戳。

返回值

返回一个新的 DateTimeImmutable 对象,其中包含修改后的数据。

示例

示例 #1 DateTimeImmutable::setTimestamp() 示例

面向对象风格

<?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";
?>

上面的示例将输出类似以下内容

1272508903 = 2010-04-28 22:41:43
1171502725 = 2007-02-14 20:25:25

参见

添加注释

用户贡献的注释 2 notes

up
0
Philip
3 年前
此函数不会更改 DateTimeImmutable 对象的值,正如方法名称可能暗示的那样。毕竟,该对象是不可变的。

<?php
$dti
= new DateTimeImmutable();
echo
$dti->getTimestamp(); // 例如 123456789
$dti->setTimestamp(987654321);
echo
$dti->getTimestamp(); // 123456789

$x = $dti->setTimestamp (987654321);
echo
$x->getTimestamp(); // 987654321
?>
up
-2
lukin dot andrej at gmail dot com
1 年前
在使用时区修改 Datetime 时,用户应该注意,使用 "@" 修改时间戳与使用 setTimestamp() 修改时间戳不同。

$now = new \DateTimeImmutable('August 30, 2023 09:00:00 GMT+01');
$origin = $now->getTimestamp(); // 1693382400
$usingAt = $now->modify('@'.$now->getTimestamp())->getTimestamp(); // 1693378800
$usingSetTimestamp = $now->setTimestamp($now->getTimestamp())->getTimestamp(); // 1693382400

var_dump($usingAt === $origin); // false
var_dump($usingSetTimestamp === $origin); // true
To Top