我正在尝试检查用户是否已经访问了网站超过6个月,如果他们必须提示消息。
我无法让它发挥作用,即使将日期移至今天,它仍然认为已经过去了6周。
目前是我的代码。
$created_at = "2014-12-01 16:58:23";
$sixweek = 604800 * 6;
if(strtotime($created_at) < time() + ($sixweek))
{
$data['needsnewimage'] = 1;
die('6 Weeks has passed ');
}else{
$data['needsnewimage'] = 0;
die('6 Weeks has not passed');
}
有什么想法吗?
答案 0 :(得分:2)
那不行。考虑一下:今天有人报名参加您的网站:
$created_at = '2014-12-01 08:00:00'; // "today"
if ($created_at < $today + $sixweek) ...
变为
if ($today < $today + $sixweek)
if (0 < $sixweek)
并且永远都是真的。
你想要
if ($created_at > (time() - $sixweek))
^---------^
注意改变的数学
答案 1 :(得分:1)
DateTime会使这很简单,例如: -
$created_at = new \DateTime("2014-12-01 16:58:23");
$sixWeeks = new \DateInterval('P6W');
if($created_at->add($sixWeeks) < new \DateTime()){
echo "Six weeks has passed!\n";
} else echo "Not yet!\n";