日期时间添加 1 天

2022-08-31 00:25:15

我的表单有 2 个字段 - Time_from和Time_to

现在我需要每天在我的数据库中添加一个条目(如果这些日子之间有区别)ex。Time_from = 2013-08-26 08:00:00 和 Time_to = 2013-08-28 16:00:00 所以在我的数据库中,我应该得到3个条目

Time_from = 2013-08-26 08:00:00 and Time_to = 2013-08-26 16:00:00
Time_from = 2013-08-27 08:00:00 and Time_to = 2013-08-27 16:00:00
Time_from = 2013-08-28 08:00:00 and Time_to = 2013-08-28 16:00:00

因此,为此,我制作了一种方法,首先我找到这2个日期之间的差异,然后我正在使用一个for循环,该循环将运行与这2个日期的差异相同的天数,最后我只是添加1天。

public function createOffer($offer)
{
$time_from = new DateTime($offer->time_from);
$time_to = new DateTime($offer->time_to);
$interval = $time_from->diff($time_to);

for ($counter = 0; $counter <= $interval->d; $counter++) {
    $offer->time_from = $time_from->format('Y-m-d H:i:s');
    $offer_time_to = new DateTime($time_from->format('Y-m-d'));
    $offer_time_to->setTime($time_to->format('H'), $time_to->format('i')
        , $time_to->format('s'));
    $offer->time_to = $offer_time_to->format('Y-m-d H:i:s');

    if ($offer->validate()) {
    $offer->save();
    }

    date_modify($time_from, '+1 day');
    }
}

由于某种原因,代码不起作用。

当我删除date_modify字段时,只有第一天会保存在我的数据库中(猜想for循环只运行一次)

但是,在我的代码中date_modify,只有最后一天保存在数据库中。


答案 1

您可以使用数据时间对象的添加功能

在这里,我给你一个例子,在你的发布日期中添加一个1,比如

<?php
$date = new DateTime('2000-01-01');
$date->add(new DateInterval('P1D'));
echo $date->format('Y-m-d') . "\n";
?>

输出

2000-01-02

希望它一定能帮助您解决问题。


答案 2
$date = new DateTime('2017-01-17');
$date->modify('+1 day');

echo $date->format('Y-m-d'); // 2017-01-18

您也可以这样做:

$dateTo = new \DateTime('1980-12-07 +1 day');
echo $dateTo->format('Y-m-d'); // 1980-12-08

推荐