在指定日期之前查找日期并使用PHP&amp ;; SQL

时间:2015-04-30 11:40:35

标签: php mysql

我有从数据库输出的日期:

$deadline = $row['DEADLINE'];

当我打印$截止日期时,它返回:2015-05-03 18:00:00

现在我想要一种方法,在每天24小时之前找到每天,直到今天为止,然后使用这些值中的每一个插入数据库中的新表。

所以在这种情况下我想:

2015-05-03 18:00:00
2015-05-02 18:00:00
2015-05-01 18:00:00
2015-04-30 18:00:00
2015-04-29 18:00:00

要在数据库中插入5个新行。所以我知道我今天需要约会:

$now = date("Y-m-d H:i:s");

然后我有截止日期:

$deadline = $row['DEADLINE'];

然后我可以找到天数的差异:

$dateDiff = ($deadline - $now)/(24*60*60);

这给了我一个数字(在这种情况下它将是5)。那我可以用这个数字显示5天前的日期和时间吗?

不知道如何将它们全部插入。感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

使用DateTime对象,这是最简单的方法:

PHP:

$now = new datetime();
$sub = new datetime();

for($i=0;$i<5;$i++)
{
    $sub->sub(new DateInterval('P1D'));

    echo $sub->format('Y-m-d H:i:s').'<br />';
    echo $sub->diff($now)->format('%a days').'<br />';


}

输出:

2015-04-29 14:18:09
1 days
2015-04-28 14:18:09
2 days
2015-04-27 14:18:09
3 days
2015-04-26 14:18:09
4 days
2015-04-25 14:18:09
5 days

答案 1 :(得分:0)

这非常完美,但它可能会让你开始

尝试使用日期时间http://php.net/manual/en/class.datetime.php

或碳/碳包装:https://github.com/briannesbitt/Carbon

$datetime = new DateTime("2015-04-03 18:00:00");
$now = new DateTime('NOW');

$difference = $datetime->diff($now);

echo '<pre>';

for($i = 1; $i <= $difference->days; $i++)
{

    if($difference->invert){
        var_dump (
            $temp = $datetime
            ->modify('-1 day')
            ->format('Y-m-d H:i:s')
        );
    }else{

        var_dump (
            $temp = $datetime
                ->modify('+1 day')
                ->format('Y-m-d H:i:s')
        );
    }
}