php - 日期时间加 1 天

标签 php datetime for-loop

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

现在我需要在数据库中每天添加一个条目(如果这些天之间存在差异) 前任。 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
因此,为了这个目的,我做了一个方法,我首先找到这两个日期之间的差异,然后我使用一个 for 循环,该循环将运行这两个日期之间的差异天数,最后我只需添加 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 时,只有最后一天会保存在数据库中。

最佳答案

您可以使用Datatime对象的Add功能

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

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

输出

2000-01-02

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

关于php - 日期时间加 1 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17965135/

相关文章:

javascript - 正确的时间显示

java - 由于 continue,for 循环数组中的基本 else 语句被忽略

c++ - std::shared_ptr 不适用于范围

php - 搜索 PHP/MySQL 解决方案以获取最新评论

php - 检查两个给定开始时间和结束时间之间是否存在时间范围

php - 通过从数据库读取自动创建新盒子

c# - 无法将日期字符串转换为 DateTime

python - 检查mongodb中的日期时间对象是否为UTC格式或来自python

php - 使用 PHP/MySQL 导入 CSV 数据

java - 从数组的索引检索字符串,但它不起作用