OKyJIucT
3/18/2014 - 11:05 AM

Обработка времени (только что, 5 минут назад)

Обработка времени (только что, 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);