【问题标题】:PHP DateTime() hours/minutes different but timestamp is the samePHP DateTime() 小时/分钟不同但时间戳相同
【发布时间】: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


【解决方案1】:

您的问题的实际答案是 UNIX 时间戳始终以 UTC 时间表示,但是当您选择将该时间戳转换为本地时间时,在执行转换时会考虑所选时区。

【讨论】:

    【解决方案2】:

    时间戳使用 UTC。地球上的任何地方都一样。但当地时间不同。也就是说,您不想和我们在同一时间吃午餐,您更喜欢在纽约吃早餐,而我们在爱丁堡吃午餐!

    【讨论】:

    • 那将是一顿非常晚的早餐或非常早的午餐!那样的日子我活不下去了。
    • 嗯?只有五个小时的时差 - 见timeanddate.com/worldclock
    • 哦 - 9 岁在纽约,刚刚在苏格兰吃完午饭。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2012-02-04
    • 1970-01-01
    相关资源
    最近更新 更多