由于某种原因,页面顶部的代码中有
date_default_timezone_set('America/Belize');
,我不想更改它。
为了从午夜获取当前的伦敦秒(或任何其他时区),无论我处于什么状态,我尝试使用 StackOverflow 上找到的一个小函数(只是稍微修改一下):
function seconds_from_midnight($iana_timezone = 'Europe/London'){
$time_now = time(); //UNIX TIMESTAMP (IT'S THE SAME EVERYWHERE)
$date = new DateTime();
$date->setTimestamp( $time_now );
$date->setTimezone(new DateTimeZone($iana_timezone));
$date->modify('today midnight');
$midnight_time = $date->getTimestamp();
$seconds_since_midnight = $time_now - $midnight_time;
return $seconds_since_midnight;
}
然后我通过以下方式查看伦敦的时间:
$r = seconds_from_midnight();
echo 'Time London now: '.date('H:i:s', $r).'<br>';
[如果你是伦敦人现在看时钟,这应该是正确的时间]
现在看看出现的问题:
由于某些原因,给我返回了错误的时间(我不知道为什么,但我认为它位于页面开头的
date_default_timezone_set
,我不想更改)。
我不住在美国/伯利兹,PHP 服务器位于另一个州(我不知道是哪个州,老实说我不在乎)。
那么,在这种情况下如何从伦敦(或其他州)的午夜开始获取当前秒数?
您可以根据午夜开始的秒数来创建日期,但此方法的第二个参数是时间戳。这意味着您正在创建 1970 年的日期。如果您只想显示秒数,请不要使用
date()
打印它。