Может ли кто-нибудь сказать мне, как я могу отобразить сообщение о статусе типа «12 секунд назад» или «5 минут назад» и т. Д. На веб-странице?
Вот код php для того же:
function time_since($since) { $chunks = array( array(60 * 60 * 24 * 365 , 'year'), array(60 * 60 * 24 * 30 , 'month'), array(60 * 60 * 24 * 7, 'week'), array(60 * 60 * 24 , 'day'), array(60 * 60 , 'hour'), array(60 , 'minute'), array(1 , 'second') ); for ($i = 0, $j = count($chunks); $i < $j; $i++) { $seconds = $chunks[$i][0]; $name = $chunks[$i][1]; if (($count = floor($since / $seconds)) != 0) { break; } } $print = ($count == 1) ? '1 '.$name : "$count {$name}s"; return $print; }
Функция принимает количество секунд в качестве входных данных и выводит текст, например:
и т.д
function timeAgo($timestamp){ $datetime1=new DateTime("now"); $datetime2=date_create($timestamp); $diff=date_diff($datetime1, $datetime2); $timemsg=''; if($diff->y > 0){ $timemsg = $diff->y .' year'. ($diff->y > 1?"'s":''); } else if($diff->m > 0){ $timemsg = $diff->m . ' month'. ($diff->m > 1?"'s":''); } else if($diff->d > 0){ $timemsg = $diff->d .' day'. ($diff->d > 1?"'s":''); } else if($diff->h > 0){ $timemsg = $diff->h .' hour'.($diff->h > 1 ? "'s":''); } else if($diff->i > 0){ $timemsg = $diff->i .' minute'. ($diff->i > 1?"'s":''); } else if($diff->s > 0){ $timemsg = $diff->s .' second'. ($diff->s > 1?"'s":''); } $timemsg = $timemsg.' ago'; return $timemsg; }
PHP \DateTime::diff
возвращает объект \DateInterval
на котором вы можете получить минуты публичным свойством i
.