我有一个 PHP 日期时间,形式为2019-10-10 18:25:00
.我想添加分钟,如果添加分钟后的日期时间结果超过2019-10-10 19:00:00
其余时间(分钟(将在接下来的几天添加。
这在 PHP 中是如何实现的?
使用DateInterval()
,它将为您完成这两项操作。
$time = '2019-10-10 18:25:00';
$durations = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
foreach($durations as $duration) {
$date = new DateTime($time);
$date->add(new DateInterval('PT'.$duration.'S'));
echo $date->format('Y-m-d H:i:s').PHP_EOL;
}
输出:
2019-10-10 18:25:10
2019-10-10 18:25:20
2019-10-10 18:25:30
2019-10-10 18:25:40
2019-10-10 18:25:50
2019-10-10 18:26:00
2019-10-10 18:26:10
2019-10-10 18:26:20
2019-10-10 18:26:30
2019-10-10 18:26:40
https://3v4l.org/qd6DQ
请注意,格式为PeriodDurationDesignator
。P###(D/M/Y/W)
为日/月/年/周(P10D
为10天(。对于时间,请添加T
:PT###(H/M/S)
或PT10S
10 秒的时间段。
可以使用 DateTime 的 Modify 方法添加分钟数。如果结果大于当天 19:00 的日期,则取第二天并添加其余部分。
$minutesAdd = 45;
$strDate = "2019-10-10 18:25:00";
$dateTime = date_create($strDate)
->modify($minutesAdd." Minutes");
$dateComp = date_create($strDate)
->setTime(19,0,0);
if($dateTime >= $dateComp){
$rest = $dateComp->diff($dateTime);
$dateTime
->modify("next Day 00:00")
->add($rest);
}
echo $dateTime->format("Y-m-d H:i:s");
返回
2019-10-11 00:10:00