gavrilrebrov
6/6/2017 - 1:55 AM

format-date.php

function format_date($date, $format = array()) {
  $translation = array(
    'January' => 'января' , 'February' => 'февраля', 'March'     => 'марта',
    'April'   => 'апреля' , 'May'      => 'мая'    , 'June'      => 'июня',
    'July'    => 'июля'   , 'August'   => 'августа', 'September' => 'сентября',
    'October' => 'октября', 'November' => 'ноября' , 'December'  => 'декабря',
    'Jan' => 'янв', 'Feb' => 'фев', 'Mar' => 'мар', 'Apr' => 'апр',
    'May' => 'май', 'Jun' => 'июн', 'Jul' => 'июл', 'Aug' => 'авг',
    'Sep' => 'сен', 'Oct' => 'окт', 'Nov' => 'ноя', 'Dec' => 'дек',
    'Monday'   => 'понедельник', 'Tuesday'  => 'вторник', 'Wednesday' => 'среда',
    'Thursday' => 'четверг'    , 'Friday'   => 'пятница', 'Saturday'  => 'суббота',
    'Sunday'   => 'воскресенье',
    'Mon' => 'пн', 'Tue' => 'вт', 'Wed' => 'ср', 'Thu' => 'чт', 'Fri' => 'пт',
    'Sat' => 'сб', 'Sun' => 'вс'
  );

  $defaults = array(
    'yesterday' => array('вчера', 'H:i'),
    'today'     => array('сегодня', 'H:i'),
    'tomorrow'  => array('завтра', 'H:i'),
    'long'      => array('%s', 'j F Y', 'H:i'),
  );

  $format = wp_parse_args($format, $defaults);
  $date_unix = is_integer($date) ? $date : strtotime($date);

  if ($date_unix) {
    $ymd = date('Ymd', $date_unix);

    if ($ymd == date('Ymd', strtotime('yesterday'))) {
      $key = 'yesterday';
    } elseif ($ymd == date('Ymd')) {
      $key = 'today';
    } elseif ($ymd == date('Ymd', strtotime('tomorrow'))) {
      $key = 'tomorrow';
    } else {
      $key = 'long';
    }

    $title  = array_shift($format[$key]);
    $params = array();
    foreach ($format[$key] as $date_format) {
      $params[] = @date($date_format, $date_unix);
    }
    array_unshift($params, $title);
    $date_unix = call_user_func_array('sprintf', $params);
    $date_unix = strtr($date_unix, $translation);

    return $date_unix;
  } else {
    return $date;
  }
}