Сравните две даты с добавлением дней к одной в переполнении стека

Мой код:

<?php
$today = date('Y-m-d H:i:s');
$expire1 = $row['datetime'];
$dni_uslugi = $usluga_wybor['days'];
$expire = date('Y-m-d H:i:s', strtotime($expire1. '+ '.$dni_uslugi.' days'));
$format = "Y-m-d H:i:s";
$date1  = DateTime::createFromFormat($format, $today);
$date2  = DateTime::createFromFormat($format, $expire);

if($date2 < $date1) echo 'delete';

Это работает хорошо почти для всех дат … У меня проблема с несколькими датами, например:
У меня дата 2016-03-07 22:32:54 и $dni_uslug для этой даты 30 дней, поэтому она должна закончиться в 7 апреля. Его нельзя удалить, потому что он активен, конечно, но код говорит, что удалить на эту дату …

Есть идеи, почему код делает это? Это играет хорошо с почти 98% дат, но в некоторых случаях это работает

1

Решение

Согласно этому коду, добавление 30 дней приведет вас к 6 апреля.

<?php
$date1 = new DateTime('2016-03-07 22:32:54');
$date2 = clone($date1);
$daysToAdd = 30;
$date2->add(new DateInterval("P{$daysToAdd}D"));
echo "date1:" . $date1->format('Y-m-d H:i:s') . "\n";
echo "date2:" . $date2->format('Y-m-d H:i:s') . "\n";

if($date2 < $date1) echo "delete\n";
else echo "keep\n";

Выход:

date1:2016-03-07 22:32:54
date2:2016-04-06 22:32:54
keep
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector