【问题标题】:How to I accurately get current UTC time via strtotime?如何通过strtotime准确获取当前的UTC时间?
【发布时间】:2009-09-23 04:14:14
【问题描述】:

在 PHP 中,我如何在不知道托管服务提供商所在位置的硬编码知识的情况下以 UTC 格式获取当前时间?

例如,我尝试了以下方法:

time() + strtotime('January 1, 2000')-strtotime('January 1, 2000 UTC')

并发现它报告的时间比实际 UTC 时间早一小时。我在两个不同时区的两个不同托管服务提供商上进行了尝试,结果相同。

是否有可靠(并且希望更简洁)的方法来准确获取 UTC 时间?

我仅限于 PHP 4.4.9,因此我无法使用 PHP5 中添加的新时区内容。

谢谢,提前。

【问题讨论】:

  • 只是检查一下,托管服务提供商是否与您在同一时区?您可以尝试检查 date("T") 的输出以查看。
  • @Tom:如果 OP 可以假设他的提供者在某个区域,那将起作用。 date("T") 的问题在于,例如“EST”可能来自北美 EST 或澳大利亚 EST。
  • 我只是在寻找信息。请参阅下面的答案,了解似乎在所有情况下都有效的解决方案。您关于时区缩写的观点。很好,因为我所有的服务器都在美国,所以我从来没有处理过。

标签: php utc strtotime


【解决方案1】:
$time = new DateTime('now', new DateTimeZone('UTC'));
echo $time->format('F j, Y H:i:s');

【讨论】:

  • 感谢您的回答。虽然这不适用于 PHP 4.4.9,但它在其他 PHP 5.2 上运行良好。
  • 抱歉,当我阅读您的问题时,显然我的阅读理解已经关闭。很高兴能帮上忙。
  • 但对其他人来说仍然很有价值
【解决方案2】:

这似乎对我有用。当然,您需要在 PHP 4 上对其进行测试,因为我所有的服务器都有 PHP 5,但手册声称这应该适用于 PHP 4。

$t = time();
$x = $t+date("Z",$t);
echo strftime("%B %d, %Y @ %H:%M:%S UTC", $x);

第一次,我忘记了调用 time() 和 date() 之间的日期可能会改变。

【讨论】:

  • 比使用date("T") 好得多。非常值得 +1。
  • 谢谢,我已为您的上述评论 +1。
  • 我只是在浏览 PHP 手册并在 gmdate 上运行。所以,像这样: echo gmdate("H:i:s")." UTC";应该也可以。
【解决方案3】:

这适用于 php 4.4.9 吗?

echo gmdate('Y-m-d H:i:s', time());

或者如果您希望在特定日期使用它:

$time = strtotime('January 1, 2000 UTC');
if($time){
    echo gmdate('Y-m-d H:i:s', $time);
}

【讨论】:

    【解决方案4】:
    $utcTtime = gmmktime();
    $unixTimestamp = time();
    

    gmmktime: 获取 GMT 日期的 Unix 时间戳

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 2019-06-25
      • 2011-02-18
      • 1970-01-01
      相关资源
      最近更新 更多