2015-09-14 3 views
-1

Мне нужно создать интервал DateTime, чтобы сравнить его с разницей даты. Что-то вроде этого возможно?Создать временной интервал даты

$week = new \DateTime("1 week"); 
+0

Непонятно, что вы спрашиваете? Вы уже это пробовали? –

+0

Прошу прощения, я просто попробовал то, что написал, и он работает. –

ответ

0

Ну, вы можете использовать вместо DateInterval класс. В то время как вы не можете передать относительные timeformats, такие как '1 week' в его конструктор непосредственно, есть полезный статический метод createFromDateString(), который поддерживает такой синтаксис:

$weekInterval = \DateInterval::createFromDateString('1 week'); 

Проблема заключается в том, что DateInterval случаи не являются сопоставимыми в PHP (проверить this feature request для более подробной информации) :

$someInterval = (new \DateTime('2015-09-14'))->diff(new \DateTime('2015-09-13')); 
var_dump($weekInterval > $someInterval); // false somehow 

DateTime экземпляры сопоставимы, однако. Таким образом, одним из возможных способов решения является сравнение результатов добавления двух DateInterval к той же фиксированной дате. Например:

$now = new \DateTimeImmutable(); 
var_dump($now->add($weekInterval) > $now->add($someInterval)); // true 

Eval.in demo.

0

Я думаю, что вы ищете является diff(); функция в DateTime классе.

$dateOne = new DateTime('2015-10-11'); 
$dateTwo = new DateTime('2014-10-13'); 
$interval = $dateOne->diff($dateTwo); 

echo $interval->format('%R%a days'); 

Сравнение UNIX TimeStamp

$dateTime = new DateTime("@" . $someOtherTimeStamp); 
$endTime = new DateTime("@" . time()); 
$interval = $dateTime->diff($endTime); 

Чтение Материал

diff();

Смежные вопросы