getUser()->getCulture(); } if (!$charset) { $charset = sfConfig::get('sf_charset'); } if (!isset($dateFormats[$culture])) { $dateFormats[$culture] = new sfDateFormat($culture); } return $dateFormats[$culture]->format($date, $format, null, $charset); } function format_datetime($date, $format = 'F', $culture = null, $charset = null) { return format_date($date, $format, $culture, $charset); } function distance_of_time_in_words($from_time, $to_time = null, $include_seconds = false) { $to_time = $to_time? $to_time: time(); $distance_in_minutes = floor(abs($to_time - $from_time) / 60); $distance_in_seconds = floor(abs($to_time - $from_time)); $string = ''; $parameters = array(); if ($distance_in_minutes <= 1) { if (!$include_seconds) { $string = $distance_in_minutes == 0 ? 'меньше минуты' : '1 минута'; } else { if ($distance_in_seconds <= 5) { $string = 'меньше 5 секунд'; } else if ($distance_in_seconds >= 6 && $distance_in_seconds <= 10) { $string = 'меньше 10 секунд'; } else if ($distance_in_seconds >= 11 && $distance_in_seconds <= 20) { $string = 'меньше 20 секунд'; } else if ($distance_in_seconds >= 21 && $distance_in_seconds <= 40) { $string = 'полминуты'; } else if ($distance_in_seconds >= 41 && $distance_in_seconds <= 59) { $string = 'меньше минуты'; } else { $string = '1 минуту'; } } } else if ($distance_in_minutes >= 2 && $distance_in_minutes <= 44) { $string = '%minutes% минут'; $parameters['%minutes%'] = $distance_in_minutes; if (($parameters['%minutes%'] % 10) == 1) $string = '%minutes% минуту'; else if (($parameters['%minutes%'] % 10) > 1 && ($parameters['%minutes%'] % 10) < 5) $string = '%minutes% минуты'; else $string = '%minutes% минут'; } else if ($distance_in_minutes >= 45 && $distance_in_minutes <= 89) { $string = 'около часа'; } else if ($distance_in_minutes >= 90 && $distance_in_minutes <= 1439) { $string = 'около %hours% часов'; $parameters['%hours%'] = round($distance_in_minutes / 60); } else if ($distance_in_minutes >= 1440 && $distance_in_minutes <= 2879) { $string = '1 день'; } # [0]нет ответов| # {n: n % 10 = 1}%count% ответ| # {n: n % 10 > 1 && n % 10 < 5}%count% ответа| # (1,Inf+]%count% ответов' else if ($distance_in_minutes >= 2880 && $distance_in_minutes <= 43199) { $string = '%days% дней'; $parameters['%days%'] = round($distance_in_minutes / 1440); if (($parameters['%days%'] % 10) == 1) $string = '%days% день'; else if (($parameters['%days%'] % 10) > 1 && ($parameters['%days%'] % 10) < 5) $string = '%days% дня'; else $string = '%days% дней'; } else if ($distance_in_minutes >= 43200 && $distance_in_minutes <= 86399) { $string = 'около месяца'; } else if ($distance_in_minutes >= 86400 && $distance_in_minutes <= 525959) { $string = '%months% месяцев'; $parameters['%months%'] = round($distance_in_minutes / 43200); if (($parameters['%months%'] % 10) == 1) $string = '%months% месяц'; else if (($parameters['%months%'] % 10) > 1 && ($parameters['%months%'] % 10) < 5) $string = '%months% месяца'; else $string = '%months% месяцев'; } else if ($distance_in_minutes >= 525960 && $distance_in_minutes <= 1051919) { $string = 'около года'; } else { $string = 'больше %years% лет'; $parameters['%years%'] = floor($distance_in_minutes / 525960); if (($parameters['%years%'] % 10) == 1) $string = '%years% год'; else if (($parameters['%years%'] % 10) > 1 && ($parameters['%years%'] % 10) < 5) $string = '%days% года'; else $string = '%years% лет'; } if (sfConfig::get('sf_i18n')) { use_helper('I18N'); return __($string, $parameters); } else { return strtr($string, $parameters); } } // Like distance_of_time_in_words, but where to_time is fixed to time() function time_ago_in_words($from_time, $include_seconds = false) { return distance_of_time_in_words($from_time, time(), $include_seconds); } ?>