public static function formated($timestamp, $local_timestamp = NULL) { $local_timestamp = $local_timestamp === NULL ? time() : (int) $local_timestamp; // Determine the difference in seconds $offset = abs($local_timestamp - $timestamp); if ($offset <= Date::MINUTE) { $span = 'только что'; } elseif ($offset < Date::HOUR) { $minutes = round($offset / 60); $span = $minutes . ' ' . Num::decl($minutes, array('минуту', 'минуты', 'минут')) . ' назад'; } elseif ($offset == Date::HOUR) { $span = 'час назад'; } elseif ($offset < Date::HOUR * 2) { $span = 'два часа назад'; } elseif ($offset < Date::DAY) { if (date('d', $timestamp) != date('d')) { $span = 'вчера в ' . date('H:i', $timestamp); } else { $span = 'сегодня в ' . date('H:i', $timestamp); } } elseif ($offset > Date::DAY) { if (date('Y', $timestamp) != date('Y')) { $span = Date::strftime_rus('%e %B2 %Y', $timestamp) . ' в ' . date('H:i', $timestamp); } else { $span = Date::strftime_rus('%e %B2', $timestamp) . ' в ' . date('H:i', $timestamp); } } if ($timestamp <= $local_timestamp) { // This is in the past return $span; } else { // This in the future return 'в ' . $span; } }