PHP,在date()之前的明天添加分钟数

问题描述 投票:0回答:2

我有一个2019-10-10 18:25:00形式的PHP日期时间。我要添加分钟,如果添加分钟后的日期时间结果大于2019-10-10 19:00:00,则其余时间(分钟)将在第二天添加。

PHP怎么可能?

php datetime
2个回答
0
投票

使用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/qd6DQPeriodDurationDesignator表示日/月/年/周(P###(D/M/Y/W)表示10天)。对于时间,请添加P10DTPT###(H/M/S) 10秒钟。


0
投票

您可以使用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");
© www.soinside.com 2019 - 2024. All rights reserved.