@Virtus_pro
PHP программист

Как в Datetime сделать кратное время 5 минутам?

Мне приходит от других сайтов время в таком формате
HH:MM DD/MM/YYYY

Я его преобразую по следующему
$advanceDeliveryDate="20:13 05/06/2018";    
$order_date = DateTime::createFromFormat('H:i d/m/Y', $advanceDeliveryDate);


Потом все это преобразовывается для записи в бд в формат DATETIME
$save['OrderDate']=$order_date->format("Y-m-d H:i:s");


Вопрос собственно в том, чтобы время было кратно 5 минутам, как это сделать? Может есть стандартные функции в DateTime? Я искал, но не нашел.

Суть в общем такая, что как примере пришло время 20:13, а система взяла и сделала кратно 5 минутам в большую сторону, то есть это будет 20:15

Сначала я думал отдельно извлекать минуты и делать что то типо такого

($number%5)?$number-$number%5+5:$number

Но как показала практика, это не работает когда передается время 20:59
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
@zhainar
Гуглю за вас
Но как показала практика, это не работает когда передается время 20:59


По-моему все работает

$advanceDeliveryDate="20:59 05/06/2018";    
$order_date = DateTime::createFromFormat('H:i d/m/Y', $advanceDeliveryDate);

$minutes = $order_date->format('i');

if ($minutes % 5)
{
	$add = 5 - ($minutes % 5);
	$order_date->modify("+{$add} minutes");
}

var_dump($order_date);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@D3lphi
Работайте с timestamp:
$datetime->getTimestamp()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы