Php 正在寻找更好的方法将小时和分钟附加到修改过的Datetime对象上

Php 正在寻找更好的方法将小时和分钟附加到修改过的Datetime对象上,php,Php,我正试图根据一个数据库项预测出许多定期约会,该数据库项声明了appt时间、appt发生在一周中的哪一天以及appt停止之前发生的次数(如果停止的话) 我可以首先将分钟和小时存储到单独的变量中,然后修改对象,并将小时和分钟作为存储在数组中的时间附加到每个修改过的对象上,从而使其工作 $t=newdatetime($ra->start\u date); $c=新日期时间($ra->end_日期); $hour=$t->format('H'); $mins=$t->format('i'); $chou

我正试图根据一个数据库项预测出许多定期约会,该数据库项声明了appt时间、appt发生在一周中的哪一天以及appt停止之前发生的次数(如果停止的话)

我可以首先将分钟和小时存储到单独的变量中,然后修改对象,并将小时和分钟作为存储在数组中的时间附加到每个修改过的对象上,从而使其工作

$t=newdatetime($ra->start\u date);
$c=新日期时间($ra->end_日期);
$hour=$t->format('H');
$mins=$t->format('i');
$chour=$c->格式('H');
$cmins=$c->format('i');
对于($k=0;$kmodify($mod)->设置时间($hour,$mins);
$e=clone$c->modify($mod)->setTime($chour,$cmins);
阵列推送($s开始,$s);
阵列推送($ends,$e);
}

如果我不这样做,它将按所需的数量修改日期,但会将时间戳擦除到00:00:00。

该行为在文档的第一个注释中解释:

请注意,“明天11:00”和“明天11:00”是 不同。考虑到今天的“2008年7月23日”是第一个 制作“2008-07-24 11:00”,其中第二个制作 “2008-07-24 00:00”

原因是“昨天”、“午夜”、“今天”、“中午” 还有“明天” 直接影响当前时间

因此,考虑到这一点,一种更简洁的方法是将时间作为要添加的相对时间的一部分进行传递。对于演示:

$date = new DateTimeImmutable('2019-08-30 14:31:26');
$newDate = $date->modify('+1 weekday ' . $date->format('H:i:s'));


由于您需要可变性以能够重复添加天数,请使用常规的
DateTime
对象,而不是像您正在做的那样使用
DateTimeImmutable

作为DateTime对象的一部分,是否有函数可以执行此操作?这就是我现在正在做的,并且已经尝试过了-出于某种原因,它会擦除H:I:s信息,而我无法执行此操作我们出去了why@KobyCampbell顺便说一句,你不应该编辑你的问题来包含解决方案,否则来这里的人将很难弄清楚原来的问题是什么,以及它是否适用于他们。要么接受一个解决方案,要么添加你自己的解决方案。请看和。我没有,但好……我只是尝试了一下,它只会修改一次只要重复这一个变化,我需要它在前面的变化之上进行变化。它们只是计数器,用于检查重复应用程序的每次发生($I)和每个工作日($j),无论应用程序发生多少次($k)好吧,酷-我正在使用您的部分代码“$date->format('H:I:s')”现在,这本身就更干净了,所以谢谢!