如何根据时区在 php 中获取 Unix 时间戳

2022-08-30 17:26:18

代码优先

    echo time() . '<br/>';
echo date('Y-m-d H:i:s') . '<br/>';
date_default_timezone_set('America/New_York'); 

echo time() . '<br/>';
print_r($timezones[$timezone] . '<br/>');
echo date('Y-m-d H:i:s') . '<br/>';

在上面的代码中,日期是根据时区打印的,但即使在设置默认时区后,unix时间戳也是相同的

我们如何根据时区打印Unix时间戳?


答案 1

Volkerk提供的答案(即时间戳意味着始终基于UTC)是正确的,但是如果您确实需要解决方法(制作基于时区的时间戳),请查看我的示例。

<?php

//default timezone
$date = new DateTime(null);
echo 'Default timezone: '.$date->getTimestamp().'<br />'."\r\n";

//America/New_York
$date = new DateTime(null, new DateTimeZone('America/New_York'));
echo 'America/New_York: '.$date->getTimestamp().'<br />'."\r\n";

//Europe/Amsterdam
$date = new DateTime(null, new DateTimeZone('Europe/Amsterdam'));
echo 'Europe/Amsterdam: '.$date->getTimestamp().'<br />'."\r\n";

echo 'WORK AROUND<br />'."\r\n";
// WORK AROUND
//default timezone
$date = new DateTime(null);
echo 'Default timezone: '.($date->getTimestamp() + $date->getOffset()).'<br />'."\r\n";

//America/New_York
$date = new DateTime(null, new DateTimeZone('America/New_York'));
echo 'America/New_York: '.($date->getTimestamp() + $date->getOffset()).'<br />'."\r\n";

//Europe/Amsterdam
$date = new DateTime(null, new DateTimeZone('Europe/Amsterdam'));
echo 'Europe/Amsterdam: '.($date->getTimestamp() + $date->getOffset()).'<br />'."\r\n";
?>

获取常规时间戳并添加 UTC 偏移量


答案 2

https://en.wikipedia.org/wiki/Unix_time

Unix 时间或 POSIX 时间是一个用于描述时间时刻的系统,定义为自 1970 年 1 月 1 日星期四午夜协调世界时 (UTC) 以来经过的秒数

unix 时间戳不受时区设置的影响。设置时区仅影响时间戳值的解释。


推荐