PHP strtotime无法与mysql值执行类似的转换

时间:2018-08-18 00:47:06

标签: php mysql timestamp strtotime

所以我要从mysql数据库中获取一个时间戳,并且想知道为什么所有的时间检查都不起作用。

echo "The time is " . date("Y-m-d h:i:s");
echo "</br>";
echo "Mysql Timestamp " . $row["Uptime"];
echo "</br>";
echo "Mysql Timestamp as strtotime" .strtotime($row["Uptime"]);
echo "</br>";
echo "strtotime Current Time". strtotime("now");
echo "</br>";

输出:

The time is 2018-08-18 12:42:55
Mysql Timestamp 2018-08-18 12:42:52
Mysql Timestamp as strtotime1534596172
strtotime Current Time1534552975

转换为字符串后,数字之间存在大约4000的差异。怎么回事,如何在不进行x-4000的情况下解决此问题?

1 个答案:

答案 0 :(得分:2)

差异是由于您所在的时区造成的。 date()使用您的本地时区来计算时间,而strtotime("now")time()使用UTC时间。比较:

echo "The time is " . date("Y-m-d h:i:s");
echo "</br>";
echo 'strtotime("now") is '. strtotime("now");
echo "</br>";
echo 'strtotime date("Y-m-d h:i:s") is '. strtotime(date("Y-m-d h:i:s"));
echo "</br>";
echo "time() is ". time();
echo "</br>";

输出(在时区Australia\Adelaide中):

The time is 2018-08-17 09:06:35
strtotime("now") is 1534554395
strtotime date("Y-m-d h:i:s") is 1534511195
time() is 1534554395

现在尝试将时区设置为UTC

date_default_timezone_set('UTC');
echo "The time is " . date("Y-m-d h:i:s");
echo "</br>";
echo 'strtotime("now") is '. strtotime("now");
echo "</br>";
echo 'strtotime date("Y-m-d h:i:s") is '. strtotime(date("Y-m-d h:i:s"));
echo "</br>";
echo "time() is ". time();
echo "</br>";

输出-如您所见,所有表单都返回相同的值:

The time is 2018-08-18 01:07:21
strtotime("now") is 1534554441
strtotime date("Y-m-d h:i:s") is 1534554441
time() is 1534554441