2015-12-03 2 views
0

Я просматривал различные сообщения здесь, чтобы найти решение, но не могу найти его :(php, как сказать, если разница между двумя временами падает на сегодня, вчера или на другое?

, так что я за то, чтобы найти точную разницу между датами. В настоящее время у меня есть следующее код

$date = time(); 
$publishedDate = strtotime($item->published_time); 
$datediff = $date - $publishedDate; 
$daysListed = floor($datediff/(60*60*24)); 

if($daysListed >= 2) 
{ 
    $days = $daysListed." days ago";  
} 
elseif ($daysListed == 1) 
{ 
    $days = $daysListed." yesterday"; 
} 
elseif ($daysListed < 1) 
{ 
    $days = "today"; 
} 

, который делает очень хорошую работу, главный недостаток я должен с этим сказать, что мой пользователь отправляет сообщение в 23:59 вечера прошлой ночью выше код будет возвращать значение «сегодня», потому что $ DateDiff является вернувшись менее чем за 24 часа, даже если он был опубликован вчера. Есть ли более точный способ возврата правильного значения?

высоко ценю вашу помощь Луки

+0

Используйте [DateTime объекты] (http://www.php.net/manual/en/class.datetime.php) и ' diff() ', а затем ответ находится в свойстве' days' полученного объекта DateInterval –

+0

спасибо за ваши комментарии, Machavity моя проблема немного отличается от того, что обсуждалось в этом потоке. Марк Бейкер. Я довольно новичок, когда дело доходит до такого рода вещей, и я не смог найти то, что искал в ваших ссылках. – BBLJ84

ответ

1

Вам нужно сравнить также время
например $ TimePub 23:59 $ nowtime 11:20

.... 
elseif ($daysListed < 1) 
{ 
    if ($timePub > $nowtime) { 
    $days = " yesterday"; 
    } 
    else { 
    $days = "today"; 
    } 
} 
+0

большое спасибо moskito-x, который решил мою проблему, оцените вашу помощь !! – BBLJ84

+0

@ BBLJ84: добро пожаловать :) –