strtotime() 不返回正确的时间

  • 本文关键字:时间 返回 strtotime php
  • 更新时间 :
  • 英文 :


我在让strtotime()正常工作时遇到了问题。

首先,这是我的目标:我正在尝试设置您只能每 5 分钟创建一篇文章。

为了实现这一目标,我有

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

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

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

输出:

13922033231392228579

$lastcreate存储在我的数据库中,就像现在()

当我使用此代码调用它时。这些数字相差大约 7 小时。

有谁知道它为什么这样做和/或更好的方法来做到这一点?

这是您正在寻找的内容,设置时区以匹配PHP和MySQL的方法以及正确的比较。

.PHP

date_default_timezone_set('America/New_York');

MySQL 查询在查询之前运行

SET time_zone = 'US/Eastern'

您的 PHP 比较

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

尝试将它们设置为变量:

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

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

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

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

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

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

最新更新