Обработка времени (только что, 5 минут назад) padezh
<?php
/*
echo plural_form(42, array('арбуз', 'арбуза', 'арбузов'));
*/
function plural_form($n, $forms) {
return $n%10==1&&$n%100!=11?$forms[0]:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?$forms[1]:$forms[2]);
}
function dateDiff($sd, $snow = null){
if ($snow===null) $snow = time();
$seconds = $snow-$sd;
$aseconds = abs($seconds);
if ($aseconds<120)
{
return ("Только что");
}
elseif($aseconds<3600)
{
return ($seconds<0 ? "через " : "").(round($aseconds / 60) % 60)." ".plural_form(round($aseconds / 60) % 60, ["минуту", "минуты", "минут"]).($seconds>0 ? " назад" : "");
}
elseif($aseconds<18000)
{
return ($seconds<0 ? "через " : "").(round($aseconds / 3600) % 24)." ".plural_form(round($aseconds / 3600) % 24, ["час", "часа", "часов"]).($seconds>0 ? " назад" : "");
}
elseif(($days = abs(strtotime(date("Y-m-d", $sd))-strtotime(date("Y-m-d", $snow)))/3600/24 >> 0)<3)
{
if ($seconds>=0){
switch($days){
case 0: return "сегодня в ".date("H:i", $sd); break;
case 1: return "вчера в ".date("H:i", $sd); break;
case 2: return "позавчера в ".date("H:i", $sd); break;
}
}
else{
switch($days){
case 0: return "сегодня в ".date("H:i", $sd); break;
case 1: return "завтра в ".date("H:i", $sd); break;
case 2: return "послезавтра в ".date("H:i", $sd); break;
}
}
}
else
{
return date("Y-m-d H:i", $sd);
}
}
echo dateDiff(1395142700);