【问题标题】:strtotime('today') returning incorrect time?strtotime('today') 返回不正确的时间?
【发布时间】:2012-04-15 00:04:09
【问题描述】:

我正在尝试从用户的当前日期开始创建一个选择列表。我希望它以 unix 时间戳格式设置为午夜。

这就是我正在做的一切:

$today = strtotime('today');
echo $today;

这是我的结果:

1333144800

根据 Epoch Converter,这是:格林威治标准时间 2012 年 3 月 30 日星期五 22:00:00(不正确几个小时。)

【问题讨论】:

  • 看起来服务器的时区设置为 GMT+2,所以您实际上得到了正确的结果。

标签: php unix time strtotime timezone-offset


【解决方案1】:

格林威治标准时间 (+0) 时间

echo $today = strtotime('today GMT');
echo "<br>" . $today = date("d-m-Y H:i:s", $today);

我们希望您的服务器在 GMT 运行 - 这是最好的(用于稍后显示时间的操作)。如果没有,你必须调整 php.ini 设置这个“date.timezone = GMT”。

完成后,您将看到 00:00 和我的代码。

那么,如果

  • 您不在 GMT 地区
  • 或/和如果您希望您的用户通过时区选择来查看其时区中的时间。

DisplayDate() 还应包括对日光变化的支持(0 或 +1 小时/夏季和冬季时间)。

【讨论】:

    【解决方案2】:

    您可能需要专门设置时间和日期:

    $today_midnight = strtotime('today UTC 00:00');
    

    【讨论】:

      【解决方案3】:
      strtotime( $time )
      

      旨在返回一个 unix 时间戳,这意味着它将返回自 1970 年 1 月 1 日以来的秒数。http://www.php.net/manual/en/function.strtotime.php

      要解决这个问题,请使用类似:

      $today = date("d/m/Y H:i:s", strtotime('today'));
      echo $today;
      

      【讨论】:

        【解决方案4】:

        您应该检查 php.ini 文件中的时区配置。就我而言(我住在萨尔瓦多),我不得不像这样改变它:

        date.timezone = America/El_Salvador
        

        【讨论】:

          【解决方案5】:

          如果您希望 strtotime() 返回相对于 UTC 的时间戳(00:00:00 UTC 而不是例如 00:00:00 UTC+2,如果您的系统设置为偏移 2 小时的时区UTC/GMT),您需要指定:

          $today = strtotime('today UTC');
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-10-22
            • 2012-02-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多