PHP, добавить минуты завтра от даты () - PullRequest
0 голосов
/ 12 октября 2019

У меня есть PHP datetime в виде 2019-10-10 18:25:00. Я хочу добавить минуты, и если результат даты и времени после добавленных минут превышает 2019-10-10 19:00:00, то остальные (минуты) будут добавлены в следующие дни.

Как это возможно с PHP?

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Вы можете использовать метод Modify DateTime, чтобы добавить минуты. Если результат больше даты того же дня 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
0 голосов
/ 13 октября 2019

Используйте 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 секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...