如何将 UTC 时间戳值转换为本地日期时间

How to convert UTC timestamp Value to local date time

我有一个 UTC 时间戳值 1615958170523,我想将其转换为我们当地的时区。

我试过这个方法:

时间戳以毫秒为单位,这就是为什么我首先以秒为单位进行转换,然后使用以下方法。

$Date = date('m-d-Y H:i:s', 1615958170523/1000);

它总是 returns 大约 6 小时前的时间,即 03-17-2021 05:16:10(考虑到这里的当前时间),我不想添加 +5:30 小时来做同样的事情。

我们是否可以使用 Cakephp 或 PHP 提供的内置函数的标准方法,以便我可以获得相同的答案?

我也试过这个:

$gmtTimezone = new \DateTimeZone('GMT');
$myDateTime = new \DateTime(1615958170523/1000, $gmtTimezone);

它returns和我用过的date功能一样

您需要更改时区以定义 GMT 时间戳。

$timestamp = 1615958170523/1000;

$myDateTime = \DateTime::createFromFormat('U', (int)$timestamp);
echo $myDateTime->format('Y-m-d H:i:s'), PHP_EOL; // 2021-03-17 05:16:10

$myDateTime->setTimezone(new \DateTimeZone('Europe/Paris'));
echo $myDateTime->format('Y-m-d H:i:s'), PHP_EOL; // 2021-03-17 06:16:10

$myDateTime->setTimezone(new \DateTimeZone('America/Denver'));
echo $myDateTime->format('Y-m-d H:i:s'), PHP_EOL; // 2021-03-16 23:16:10

DateTime::setTimezone() documentation

您应该使用 FrozenTime,它将使用您在 config/app.php

中设置的默认时区