【问题标题】:understanding gmtime return value了解 gmtime 返回值
【发布时间】:2011-07-18 17:57:57
【问题描述】:

如果我的服务器未配置为格林威治标准时间,我无法理解为什么 gmdate()date() 会返回相同的值。

这是为什么?

echo time();                 // 1311011114
echo date("U");              // 1311011114
echo gmdate("U");            // 1311011114


echo date("j-m-y H:m:s");    // 18-07-11 12:07:14
echo date("e");              // America/Chicago
echo date("O");              // -0500
echo date("T");              // CDT

更新
我如何获得格林威治的当前时间?用日期(“O”)计算?还有其他方法吗?

【问题讨论】:

  • 查看我在帖子中添加的链接以供您更新
  • 对我来说有意义的答案是:time() is always the same **everywhere**

标签: php timezone


【解决方案1】:

因为时间永远不会改变——它总是自纪元 (GMT) 以来的秒数。

时间总是一样的。只是您的时区不同,这就是显示日期的不同。

您可以更改时区以查看不同时区的时间。

请参阅here 了解所有日期/时间函数

【讨论】:

    【解决方案2】:

    所以很久以前,人们需要一种方法来确定跨多个统一计算系统的时间。前互联网时代的智者计算辛迪加理事会(简称 CSCWE)是对此做出决定的人。一次无记名投票决定任意起点为 1970 年,以预示更先进的计算时代。因此,从那一刻起,数十年来无休止的秒数运动开始了,随着秒数的稳定节拍,计算革命的新时代开始了。

    从这个任意定义的开始,所有的计算时间都可以通过对不断增加的秒数运行数学魔法来确定,然后考虑时区。

    【讨论】:

    • 这一切我都知道。我已经更新了这个问题。我不知道为什么 gmdate() 存在。似乎是 date() 的别名
    • @LuisSiquot: php.net/manual/en/function.gmdate.php 它将始终在 gmtime 中返回,而 date() 将仅返回当前时区设置
    • date() 只会返回当前时区设置,除了“U”修饰符?
    【解决方案3】:

    已经回答了,但是如果你想获取本地时间和UTC时间;

    date_default_timezone_set('America/Chicago');
    
    $format = 'Y-m-d H:i:s';
    $time1  = time();
    $time2  = strtotime(gmdate($format));
    
    print date($format, $time1);
    print date($format, $time2);
    
    // 2014-07-24 17:31:23
    // 2014-07-24 22:31:23
    

    【讨论】:

      猜你喜欢
      • 2013-05-20
      • 2016-12-23
      • 2016-07-25
      • 1970-01-01
      • 2019-04-01
      • 1970-01-01
      • 2014-12-26
      • 2016-04-29
      • 1970-01-01
      相关资源
      最近更新 更多