strtotime('today')返回的时间不正确?

13

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

这是我正在做的全部内容:

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

这是我的结果:

1333144800

日期是:根据Epoch Converter是Fri,30 Mar 2012 22:00:00 GMT(有几个小时不正确)。


3
看起来服务器的时区设置为GMT+2,所以你实际上得到了正确的结果。 - Niko
5个回答

26

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

$today = strtotime('today UTC');

6

GMT (+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。

接下来,您需要在脚本中开发一个函数(例如DisplayDate()),以便正确显示网站日期,如果:

  • 您不在GMT区域
  • 或/和您希望让您的用户选择时区并查看他们所在时区的时间。

DisplayDate() 函数还应包括对夏令时更改的支持(0或+1小时/夏季和冬季时间)。


3
strtotime( $time )

该函数旨在返回 Unix 时间戳,即从1970年1月1日以来的秒数。 http://www.php.net/manual/zh/function.strtotime.php

为了避免这种情况,可以使用类似以下代码:

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

1
您可能需要明确设置时间和日期:
$today_midnight = strtotime('today UTC 00:00');

0

您应该检查您的php.ini文件中的时区配置。在我的情况下(我住在萨尔瓦多),我必须像这样更改它:

date.timezone = America/El_Salvador

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接