【发布时间】:2012-03-30 12:44:01
【问题描述】:
我正在尝试获取当前纽约和伦敦日期/时间的时间戳。
date_default_timezone_set('America/New_York');
$dtNY = new DateTime();
echo 'New York';
echo date('m-d-Y H:i:s', $dtNY->getTimestamp());
echo $dtNY->getTimestamp();
echo 'London';
date_default_timezone_set('Europe/London');
$dtLondon = new DateTime();
echo date('m-d-Y H:i:s', $dtLondon->getTimestamp());
echo $dtLondon->getTimestamp();
上面代码的结果是
纽约 03-30-2012 08:32:49 1333110769
伦敦 2012 年 3 月 30 日 13:32:49 1333110769
为什么上面的代码给了我完全相同的时间戳但不同的日期?!?这不合逻辑:-s
【问题讨论】:
-
因为在任何给定时刻(即时间戳代表什么),纽约的当地时间与伦敦的当地时间不同。这是完全合乎逻辑的。目前纽约在 GMT-4 和伦敦在 GMT+1,因此观察到的本地时差为 5 小时。
-
所以无论我在英国的服务器、伦敦的服务器还是西伯利亚的服务器上运行 time(),任何时候都会给我相同的时间戳?
-
假设所有服务器都正确设置了时钟,并且系统管理员已为其物理位置选择了正确的时区,是的。还有大量配置过时或不正确的设置会导致差异,但这不是您要问的。
标签: php