【发布时间】:2013-05-07 16:10:09
【问题描述】:
您好,我有一个投票系统。
一旦有人投票,我就有一个名为“nextVote”的列。
该列将保存用户可以再次投票的日期。 通过该专栏,我将能够回应他在投票前需要等待多少小时/分钟。
这是我的尝试:
public final function setNextVote($ip)
{
$this->insert = $this->pdo->prepare("UPDATE auths SET nextVote = NOW() + INTERVAL 12 HOUR WHERE voter_ip = :ip");
$this->insert->execute(array(":ip" => $ip));
}
以及它存储的内容:
2013-05-14 05:56:24
为什么?..
我想要做的是:当前时间 + 12 小时。
如果今天是 2013 年 05 月 14 日和 12:00。
12小时后
2013 年 5 月 14 日 24:00 为什么不这样做?
public function getTimeLeft($ip)
{
$this->get = $this->pdo->prepare
("
SELECT TIMESTAMPDIFF(MINUTE, `nextVote`, NOW())
FROM auths
WHERE `voter_ip` = :ip
");
$echo = $this->get->execute(array(":ip" => $ip));
return $echo;
}
【问题讨论】:
-
你的意思是 12 小时后会是 2013-05-15 00:00:00?
-
它使用 UNIX 时间,即 GMT。目前是 GMT 时区的 06:02 PM。再加上 12 小时,它变成了上午 06:02,这就是您的结果所表明的。
-
没有 24:00 这样的事情,应该是
2013-05-15 00:00:00 -
在sql-manager中运行
SELECT NOW() + INTERVAL 12 HOUR -
更好的是,运行
SELECT NOW()
标签: php