За последние 24 часа нас посетили 49996 программистов и 1758 роботов. Сейчас ищут 992 программиста ...

Скрипт отображения даты русскими символами

Тема в разделе "PHP для новичков", создана пользователем Darken, 8 фев 2009.

  1. Darken

    Darken Активный пользователь

    С нами с:
    2 фев 2009
    Сообщения:
    38
    Симпатии:
    0
    Сразу скажу, что начинающий, если вопросы покажутся комуто глупыми - огромная проьба ногами не пинать, без дела не флудить и т.д., отнестись с пониманием, Москва она ведь тоже не сразу строилась.

    Итак к делу.
    Появилась надобность отбражать даты на руссом языке. Может существует какое-то универсальное средство решения данной проблемы? Или надо писать скрипт с нуля?
     
  2. sylex

    sylex Активный пользователь

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    PHP:
    1. <?php
    2. class wfDate
    3. {
    4.     static $aMonth = array(0,'Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь');
    5.     static $aMonth_ = array(0,'Января','Февраля','Марта','Апреля','Мая','Июня','Июля','Августа','Сентября','Октября','Ноября','Декабря');
    6.     static $aNameDay = array(0,'понедельник','вторник','среда','четверг','пятница','суббота','воскресенье');
    7.    
    8.     static function GetDateRus($date, $aParams = array())
    9.     {
    10.         $d = explode('-', (string)$date);
    11.         if (sizeof($d) != 3) return '';
    12.         if (!checkdate($d[1], $d[2], $d[0])) return '';
    13.         $s = (int)$d[2] . ' ' . strtolower(wfDate::$aMonth_[(int)$d[1]]);
    14.         if (isset($aParams['name_day'])) {
    15.             $week_num = date('w', mktime(0, 0, 0, $d[1], $d[2], $d[0]));
    16.             if ($week_num == 0) $week_num = 7;
    17.             $s .= ', ' . wfDate::$aNameDay[$week_num];
    18.         }
    19.         return $s;
    20.     }
    21. }
    22.  
    23. // пример использования
    24. echo wfDate::GetDateRus('2009-02-15');
    25. echo '<br />';
    26. echo wfDate::GetDateRus('2009-01-11', array('name_day'=>true));
    27.  
    28. ?>
    можешь дописать год там и все что угодно
     
  3. kuliev

    kuliev Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    204
    Симпатии:
    0
    Адрес:
    TLT
    Вот вариант попроще: Чтобы тебе мозг не перезагружать!

    PHP:
    1.  
    2. <?
    3.  function show_date()
    4. {
    5. $day    = date('d');
    6. $mounth = date('m');
    7. $year   = date('Y');
    8. $data   = array('01'=>'января','02'=>'февраля','03'=>'марта','04'=>'апреля','05'=>'мая','06'=>'июня',
    9.                 '07'=>'июля', '08'=>'августа','09'=>'сентября','10'=>'октября','11'=>'ноября','12'=>'декабря');
    10.  
    11.    foreach ($data as $key=>$value)
    12. {
    13.  if ($key==$mounth) echo "<b><font color=#F84501>$day $value $year</font></b>";
    14. }
    15.  
    16. }
    17.  
     
  4. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Еще проще)
    PHP:
    1. <?php
    2. function getRuDate($date){
    3.   $en = array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
    4.   $ru = array("Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря");
    5.   return str_replace($en, $ru, $date);
    6. }
    7.  
    8. echo "Сегодня ".getRuDate(date("j M Y"));
    9. ?>
    10.  
     
  5. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1. <?php
    2. setlocale(LC_TIME, 'ru_RU.UTF-8');
    3. print strftime('%e %b %G');
     
  6. sylex

    sylex Активный пользователь

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    :lol: ток наверняка %B больше подойдет
    афигеть, а мы тут функции пишем)))
     
  7. sylex

    sylex Активный пользователь

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    потому и хочу весь мануал перечитать и выучить...
     
  8. Darken

    Darken Активный пользователь

    С нами с:
    2 фев 2009
    Сообщения:
    38
    Симпатии:
    0
    всем спасибо, а шкатулочка то просто открывалась )))
     
  9. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Надо дописать - работает не на всех хостингах =)
     
  10. sylex

    sylex Активный пользователь

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    Elkaz
    точно?
     
  11. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    не годится если нужно не "Фев" а "февраля" Если попытаться вывести дату с полным месяцем то получится "19 февраль" 2009. Так что самописные функции весьма полезны
     
  12. akrinel

    akrinel Активный пользователь

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    Ну я как ленивый программист сделал бы просто "Февраль, 19 2009" ;)
     
  13. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Хорошо бы, но... клиенту пофигу моя лень :) С меня вот потребовали недавно, чтобы даты семинаров писались как "с 15 февраля по 1 марта 2009 года". И правильно сделали - так оно куда красивее.
     
  14. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    karakh
    Написать функцию склонения (в поиске поискать, я помню точно - такая была)
     
  15. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Да, если на сервере не стоит русская локаль
     
  16. sylex

    sylex Активный пользователь

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    тогда мы на верном пути :)