strtotime()没有返回适当的时间

时间:2014-02-12 21:32:21

标签: php

我无法让strtotime()正常工作。

对于初学者来说,这是我的目标: 我正在设置它,你每5分钟只能创建一篇文章。

要做到这一点,我有

    strtotime('5 minutes')<strtotime($lastcreate)

此代码^^在我的文件中。

   <?php
        echo '<ul><li>' . strtotime($lastcreate) . '</li>';
        echo '<li>' . strtotime("now") . '</li></ul>'; ?>

输出:
1392203323
1392228579

$ lastcreate以now()

的形式存储在我的数据库中

当我使用此代码来调用它时。数字相差7个小时。

有人知道为什么会这样做和/或更好的方法来做这件事吗?

3 个答案:

答案 0 :(得分:2)

以下是您正在寻找的方法,以及在PHP和MySQL中设置时区以及正确比较的方法。

PHP

date_default_timezone_set('America/New_York');

MySQL Query在查询之前运行

SET time_zone = 'US/Eastern'

您的PHP比较

if(strtotime('now') >= strtotime($lastcreate . ' +5 minutes')){
    // its been more then 5 minutes since the last post
}

答案 1 :(得分:1)

尝试将它们设置为变量:

$five_mins = strtotime('5 minutes');
$last_create_time = strtotime($lastcreate);

然后,比较,打印或存储变量。

if ($five_mins < $last_create_time) { ...

答案 2 :(得分:1)

很可能MySQL中设置的时区与PHP中的时区不同。

如果您可以将它们配置为相同,那就太好了。

我一直只是使用应用程序(即PHP代码)来生成时间戳。因此,不要使用MySQL NOW(),而是使用PHP time(),然后将其插入数据库。