За последние 24 часа нас посетили 21327 программистов и 1022 робота. Сейчас ищет 851 программист ...

Дата на русском языке

Тема в разделе "Прочие вопросы по PHP", создана пользователем ilin_valentin, 24 янв 2012.

  1. ilin_valentin

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

    С нами с:
    24 янв 2012
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте!
    Ребятки, нужна ваша помощь.
    Есть код:
    Код (Text):
    1.  <?php  
    2. $day = strtotime("next Monday");
    3. for ($i=1; $i <= 7; $i++) {            
    4. $weekday = date("w",$day);
    5. $field_open = $weekday.'_open_time';
    6. $field_close = $weekday.'_close_time';
    7. echo "<tr><td><div class='bold'>".date("l",$day)."</div></td><td class='padding-left-20'>".
    8. date('H:i',strtotime($row->$field_open))." - ".date('H:i',strtotime($row->$field_close)).
    9. "<br/></td></tr>";
    10. $day = $day + 86400;
    11. }
    12. ?>
    Отображается он следующим образом:
    Monday 00:00 - 00:00
    Tuesday 00:00 - 00:00
    Wednesday 00:00 - 00:00
    Thursday 00:00 - 00:00
    Friday 00:00 - 00:00
    Saturday 00:00 - 00:00
    Sunday 00:00 - 00:00

    Нужно сделать вот так:
    Понедельник 00:00 - 00:00
    Вторник 00:00 - 00:00
    Среда 00:00 - 00:00
    Четверг 00:00 - 00:00
    Пятница 00:00 - 00:00
    Суббота 00:00 - 00:00
    Воскресенье 00:00 - 00:00



    Жду от Вас конкретного решения.
    Заранее спасибо.
     
  2. asokol

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

    С нами с:
    17 янв 2012
    Сообщения:
    162
    Симпатии:
    0
    Вместо date использовать strftime. Обратите внимание, что форматирование вывода у этих функций отличается.
    http://php.net/manual/en/function.strftime.html
     
  3. ilin_valentin

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

    С нами с:
    24 янв 2012
    Сообщения:
    2
    Симпатии:
    0
    asokol , Напишите пожалуйста код.
    Я в php совсем новичок.
    Заранее вам благодарен.
     
  4. LinuxFanat

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

    С нами с:
    9 янв 2012
    Сообщения:
    6
    Симпатии:
    0
    Используй str_replace .
    Например
    Код (Text):
    1. str_replace "Monday", "Понедельник",$date
     
  5. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Я обычно так делаю:
    Код (PHP):
    1. <?php
    2. // Вывод даты на русском
    3. $monthes = array(
    4.     1 => 'Января', 2 => 'Февраля', 3 => 'Марта', 4 => 'Апреля',
    5.     5 => 'Мая', 6 => 'Июня', 7 => 'Июля', 8 => 'Августа',
    6.     9 => 'Сентября', 10 => 'Октября', 11 => 'Ноября', 12 => 'Декабря'
    7. );
    8. echo(date('d ') . $monthes[(date('n'))] . date(' Y, H:i'));
    9.  
    10. // Вывод дня недели
    11. echo('<br />');
    12. $days = array(
    13.     'Воскресенье', 'Понедельник', 'Вторник', 'Среда',
    14.     'Четверг', 'Пятница', 'Суббота'
    15. );
    16. echo($days[(date('w'))] . date(', H:i'));
    17. ?>
     
    Uint32 и wet нравится это.
  6. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Читаем документацию:
    Следовательно, единственный верный ответ у asokol. Стоит лишь добавить ещё одну ссылку: http://ru2.php.net/manual/ru/function.setlocale.php

    Код (PHP):
    1. <?php
    2. setlocale(LC_ALL, 'ru_RU.UTF-8');
    3. echo strftime('%S', time());
    4. ?>
    Код (Text):
    1. Вт. 24 янв. 2012 19:22:35
     
  7. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Возможно, но мне не нравится "янв.", мне нравится "Января" :)))
     
  8. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Ну тогда отдельно сделать список и вт. и т.д. с янв. заменять)
     
  9. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    О чём я тут и написал несколькими постами выше:
    viewtopic.php?p=308782#p308782
     
  10. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    нет, смотрите смотрите функцию strftime, ссылка на которую есть выше
    Код (Text):
    1. php > echo strftime('%b %B %h %m', strtotime("+6 month"));
    2. июля Июль июля 07
     
  11. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    topas
    Ок, буду знать если что, благодарю.
     
  12. hack-dag

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

    С нами с:
    3 июл 2016
    Сообщения:
    20
    Симпатии:
    0
    да на самом деле все проще можно сделать.
    конечно код не идеальный, но понятный.
    PHP:
    1. <?php
    2. echo date("d ");
    3. $mounth = date("m");
    4. if ($mounth == '01'){echo ' янв ';} if ($mounth == '02'){echo ' фев ';}
    5. if ($mounth == ' 03'){echo ' марта ';} if ($mounth == '04'){echo ' апр ';}
    6. if ($mounth == '05'){echo ' мая ';} if ($mounth == '06'){echo ' июня ';}
    7. if ($mounth == '07'){echo ' июля ';} if ($mounth == '08'){echo ' авг ';}
    8. if ($mounth == '09'){echo ' сент ';} if ($mounth == '10'){echo ' окт ';}
    9. if ($mounth == '11'){echo ' нояб ';} if ($mounth == '12'){echo ' дек ';}
    10. echo date("Y");
    11. ?>
     
  13. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Не надо так делать. Не слушайте этого некропостера.
     
  14. hack-dag

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

    С нами с:
    3 июл 2016
    Сообщения:
    20
    Симпатии:
    0
    почему бы и нет?
    разве код не работоспособный?
     
  15. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
  16. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    @hack-dag, потому что не надо говнокодить.
     
  17. hack-dag

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

    С нами с:
    3 июл 2016
    Сообщения:
    20
    Симпатии:
    0
    может для тебя код и "гав..о" но как по мне - он рабочий и понятен для простого человека. если у тебя есть свои варианты отображения даты на русском языке то пиши то, что не было уже сказано в ответах, а не высказывай мнение.
     
  18. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Думается мне, не только для меня он говно.
    здесь обсуждается программирование. Простой человек не должен заниматься программированием. Он должен быть бухгалтером/газонокосильщиком/директором/менеджером.
    А тебе совет, раз ты так отреагировал на мою справедливую критику - бросай программирование.
    @Ganzal, сорян, занял место
    :D
     
    Ganzal нравится это.
  19. hack-dag

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

    С нами с:
    3 июл 2016
    Сообщения:
    20
    Симпатии:
    0
    если тебе скучно и не с кем поговорить выйди на улицу там интереснее.. и завязывай с оскорблениями. советую бросить тебе программирование, займись хозяйством. это как раз в твою степь...
     
  20. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    мои ссылки не подошли?
     
  21. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    @hack-dag, оскорбляется тот, кто хочет быть оскорблённым. Если в моих словах ты увидел оскорбления - значит ты хочешь так думать. Тут я помочь ничем не в силах.
    А на слабо я не ведусь, к сожалению.
     
  22. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @hack-dag, для этой задачи есть готовое решение в самой PHP зачем изобретать велосипед. Выше по теме вроде это обсудили.
    Конечно в качестве образования получения опыта можно изобретать велосипеды, но советовать другим так делать не стоит :).
    @denis01 дал тебе ссылки, почитай.
    @hack-dag, если любишь писать if-else оператор в строчку используй для этого тернарный оператор сравнения: https://php.ru/manual/language.operators.comparison.html (почитай).
     
  23. AndrewPP

    AndrewPP Новичок

    С нами с:
    5 дек 2016
    Сообщения:
    3
    Симпатии:
    2
    PHP:
    1.  
    2.   // дата в нормальном виде 23 июля 2016 г.
    3.   $rus_months = array('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');
    4.   $newDatetime = new Datetime($row_mysql['data']);
    5.   $month = $newDatetime->format('n');
    6.   $album_data = $newDatetime->format('j '.$rus_months[$month-1].'');
    7.   $album_data .= $newDatetime->format('Y г., H:m');
    8.   if (($newDatetime->format('H:i:s')) == '00:00:00')
    9.   {
    10.       $album_data = $newDatetime->format('j '.$rus_months[$month-1].'');
    11.       $album_data .= $newDatetime->format('Y г.');;
    12.   }
    $row_mysql['data'] - дата из базы в формате без конвертации - ГГГГ-ММ-ДД ЧЧ:ММ:СС
     
    Shredder и artoodetoo нравится это.
  24. Shredder

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

    С нами с:
    29 сен 2017
    Сообщения:
    1
    Симпатии:
    0
    Код (Text):
    1.   // дата в нормальном виде 23 июля 2016 г.
    2.   $rus_months = array('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');
    3.   $newDatetime = new Datetime($row_mysql['data']);
    4.   $month = $newDatetime->format('n');
    5.   $album_data = $newDatetime->format('j '.$rus_months[$month-1].'');
    6.   $album_data .= $newDatetime->format('Y г., H:m');
    7.   if (($newDatetime->format('H:i:s')) == '00:00:00')
    8.   {
    9.       $album_data = $newDatetime->format('j '.$rus_months[$month-1].'');
    10.       $album_data .= $newDatetime->format('Y г.');;
    11.   }
    как бы ещё сюда день недели добавить?
     
  25. xADMIRALx

    xADMIRALx Новичок

    С нами с:
    17 янв 2018
    Сообщения:
    1
    Симпатии:
    0
    Работает полностью как родная функция date + обрусевшие месяца и дни м | д.Пользуйтесь )
    PHP:
    1. function dateru($str) {
    2.    $result = "";
    3.    $iter = 0;
    4.    while ($iter < mb_strlen($str)) {
    5.  
    6.      switch (mb_substr($str,$iter,1)) {
    7.        case 'д': {
    8.          $dayN = date("N");
    9.          $day = "";
    10.        switch ($dayN) {
    11.          case 1:$day = "Понедельник";break;
    12.          case 2:$day = "Вторник";break;
    13.          case 3:$day = "Среда";break;
    14.          case 4:$day = "Четверг";break;
    15.          case 5:$day = "Пятница";break;
    16.          case 6:$day = "Суббота";break;
    17.          case 7:$day = "Воскресенье";break;
    18.        }
    19.          $iter++;
    20.          $result .= $day;
    21.          break;
    22.        }
    23.        case 'м': {
    24.          $monthN = date("m");
    25.          $month = "";
    26.          switch($monthN) {
    27.            case '01':$month = "Январь";break;
    28.            case '02':$month = "Февраль";break;
    29.            case '03':$month = "Март";break;
    30.            case '04':$month = "Апрель";break;
    31.            case '05':$month = "Май";break;
    32.            case '06':$month = "Июнь";break;
    33.            case '07':$month = "Июль";break;
    34.            case '08':$month = "Август";break;
    35.            case '09':$month = "Сентябрь";break;
    36.            case '10':$month = "Октябрь";break;
    37.            case '11':$month = "Ноябрь";break;
    38.            case '12':$month = "Декабрь";break;
    39.          }
    40.          $iter++;
    41.          $result .= $month;
    42.          break;
    43.    
    44.        }
    45.  
    46.        default: {
    47.          $result .=    date(mb_substr($str,$iter,1));
    48.          $iter++;
    49.          break;
    50.        }
    51.      }
    52.  
    53.    }
    54.  
    55.    return $result;
    56. }