2016-12-08 9 views
0

Я пытаюсь изменить $showThis на основе зависимости от даты, которую ближайшая к этому времени. Как я могу сравнить разницу во времени? В настоящее время $interval1 > $interval2 не работает. Я знаю, что разница рассчитывается, но я не уверен, как сравнить эти два.Php - сравните две будущие даты расстояние от текущей даты

$currentTime = new DateTime("now"); 
$wednesday = new DateTime('wednesday 10:59pm'); 
$saturday = new DateTime('saturday 10:59pm'); 
$interval1 = $currentTime->diff($wednesday); 
$interval2 = $currentTime->diff($saturday); 

if($interval1 > $interval2){ 
    $showThis = $saturday->format('D m/d/Y h:i A'); 
} 
if($interval1 < $interval2){ 
    $showThis = $wednesday->format('D m/d/Y h:i A'); 
} 
+0

метод дифф DATETIME в возвращает DateInterval http://php.net/manual/en/class. dateinterval.php – kyle

ответ

1

Использование getTimestamp способ.

$interval1 = $wednesday->getTimestamp() - $currentTime->getTimestamp(); 
$interval2 = $saturday->getTimestamp() - $currentTime->getTimestamp(); 
0

Вы должны преобразовать интервал в секундах, добавив его к 0 дате, прежде чем сравнивать их:

$currentTime = new DateTime("now"); 
$wednesday = new DateTime('wednesday 10:59pm'); 
$saturday = new DateTime('saturday 10:59pm'); 

$interval1 = $currentTime->diff($wednesday); 
$interval2 = $currentTime->diff($saturday); 

$seconds1 = date_create('@0')->add($interval1)->getTimestamp(); 
$seconds2 = date_create('@0')->add($interval2)->getTimestamp(); 

if ($seconds1 > $seconds2){ 
    $showThis = $saturday->format('D m/d/Y h:i A'); 
} 
else { 
    $showThis = $wednesday->format('D m/d/Y h:i A'); 
} 

echo $showThis; 
Смежные вопросы