我在让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()
,然后将其插入数据库。