日期检查通过的时间量

时间:2014-12-01 17:03:59

标签: php datetime

我正在尝试检查用户是否已经访问了网站超过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');
            }

有什么想法吗?

2 个答案:

答案 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";

See it working
Reference