2014-02-12 2 views
1

Я хочу добавить ссылку «возобновить сообщение» после X дней после того, как пользователь разместил свое сообщение на веб-сайте, которое будет переставлять сообщение в начало страницы (на основе дата, полученная из базы данных, конечно). формат временной метки на моей базе данных даты подряд 2014-02-12 15:06:44php show link после x количество дней с момента публикации

$date = date('y-M-d l H:i a', strtotime($row['date'])); 
    $days = 30; //what to put here? 
    if ($date > $days){ 
     echo '<a href="$clicked">link here</a>'; 

     if ($clicked === true){ 
      mysql_query("UPADTE `posts` SET `date` = now()"); 
     } 
    } 

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

Я не уверен, какие $ days должны быть установлены .. любая помощь приветствуется!

ответ

0

Используйте DateInterval ...

$date = new DateTime($row['date']); 
$now = new DateTime(); 
$diff = $date->diff($now); 
$daysOld = $diff->days; 

Или в хорошем, ухоженном однострочнике ...

$days = 30; 
if ((new DateTime($row['date']))->diff(new DateTime())->days > $days) { 
    // etc 
} 
+0

безупречный! именно то, что мне нужно! спасибо –

+0

это странно, как только я загрузил его на мой хост онлайн, он говорит мне «синтаксическая ошибка, неожиданный T_OBJECT_OPERATOR», но на localhost это работает. Как определить дату-интервал? –

+0

@Bamba Звучит как разница в версиях PHP. Попробуйте верхний, более подробный фрагмент. Какая версия вашего хоста? – Phil

0
$thirty_days_ago = time()-24*60*60*30; 
if (strtotime($row['date'])<$thirty_days_ago){ 
+0

Следите за изменениями DST – Phil

0

Существует еще один способ расчета даты до истечения 30 дней с текущая дата с php. мы можем использовать день, месяц и год здесь. Для расчета будущих дат будет +

$currentday = "2014-02-28"; 
$postdate = date($currentday,strtotime("-30 day")); //date before 30 days 
$postdate = date($currentday,strtotime("+1 day")); //date after one day 
$postdate = date($currentday,strtotime("+1 week")); //date after one week 
Смежные вопросы