我有一个2019-10-10 18:25:00
形式的PHP日期时间。我要添加分钟,如果添加分钟后的日期时间结果大于2019-10-10 19:00:00
,则其余时间(分钟)将在第二天添加。
PHP怎么可能?
使用DateInterval()
,它将为您做这两项。
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)
表示10天)。对于时间,请添加P10D
:T
或PT###(H/M/S)
10秒钟。
您可以使用DateTime的Modify方法添加分钟。如果结果大于同一天19:00的日期,则采用第二天并添加其余部分。
PT10S
返回
$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");