Преобразование mysql даты в русский формат

Тема в разделе ".:: Готовые решения", создана пользователем zizop, 24 янв 2008.

Статус темы:
Закрыта.
  1. zizop

    zizop Прохожие

    Сейчас вот понадобилось, а в нете чего-то не нашел.
    Так сказать, для будущих поколений)

    - Преобразование формата даты
    - Автор: zizop
    - 1.0
    - Требуемые версии PHP: 4,5
    - Категория: Дата и время
    - Описание: Преобразование формата даты из mysql в российский формат, и обратно.
    - Установка: copy-n-paste

    Код:
    function us2rus_date_convert($us_date) {
    // Преобразование mysql даты в русский формат
    $date_elements  = explode("-",$us_date);
    $unix_date =  mktime(0,0,0,$date_elements[1],$date_elements[2],$date_elements[0]);
    $rus_date = date('d-m-Y', $unix_date);
    return  $rus_date;
    }
    
    function rus2us_date_convert($rus_date) {
    // Преобразование русской даты в формат mysql
    $date_elements  = explode("-",$rus_date);
    $unix_date =  mktime(0,0,0,$date_elements[1],$date_elements[0],$date_elements[2]);
    $us_date = date('Y-m-d', $unix_date);
    return  $us_date;
    }
    
     
  2. morgan_spb

    morgan_spb Постоялец

    Регистр.:
    15 сен 2006
    Сообщения:
    55
    Симпатии:
    1
    а нету решения чтобы она еще писала

    5 января 2008 ?
     
  3. zizop

    zizop Прохожие

    Ну вот так можно. Ловите други)

    Код:
    function mysqldate2full_rus($us_date) {
    $date_elements  = explode("-",$us_date);
    $unix_date =  mktime(0,0,0,$date_elements[1],$date_elements[2],$date_elements[0]);
    $rus_date = date('d F Y', $unix_date);
    $rus_date = eregi_replace("January", "января", $rus_date);
    ...
    $rus_date = eregi_replace("December", "декабря", $rus_date);
    return  $rus_date;
    }
    
     
  4. zaartix

    zaartix Постоялец

    Регистр.:
    15 май 2006
    Сообщения:
    73
    Симпатии:
    27
    Вот с названиями месяцев и т.д.
    PHP:
    /*
    rusDate('2008-01-17',1); // 17 Января 2008 г.
    rusDate('2008-01-17',2); // 17 Января
    rusDate('2008-01-17',3); // Январь 2008 г.
    */
    function rusDate($date=false,$format=1) {
        if (!
    $date) {
            
    $date date('Y-m-d');
        }
        
    $tmp explode('-',$date);
        
    $day $tmp[2];
        
    $month $tmp[1];
        
    $year $tmp[0];
        
    $months = array('','Января','Февраля','Марта','Апреля','Мая','Июня','Июля','Августа','Сентября','Октября','Ноября','Декабря');
        
    $months_s = array('','Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь');
        if (
    $format==1) {
            return 
    $day." ".$months[$month].' '.$year.' г.';
        } elseif (
    $format==2) {
            return 
    $day." ".$months[$month];
        } elseif (
    $format==3) {
            return 
    $months_s[$month].' '.$year.' г.';
        }
    }
     
    AlexAntre нравится это.
  5. zaartix

    zaartix Постоялец

    Регистр.:
    15 май 2006
    Сообщения:
    73
    Симпатии:
    27
    Поправочка прислана мне в ПМ от пользователя Перейти по ссылке
    Вот исправленный вариант:
    PHP:
    function rusDate($date=false,$format=1) {
        if (!
    $date) {
            
    $date date('Y-m-d');
        }
        
    $tmp explode('-',$date);
        
    $day = (int)$tmp[2];
        
    $month = (int)$tmp[1];
        
    $year $tmp[0];
        
    $months = array('','Января','Февраля','Марта','Апреля','Мая','Июня','Июля','Августа','Сентября','Октября','Ноября','Декабря');
        
    $months_s = array('','Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь');
        if (
    $format==1) {
            return 
    $day." ".$months[$month].' '.$year.' г.';
        } elseif (
    $format==2) {
            return 
    $day." ".$months[$month];
        } elseif (
    $format==3) {
            return 
    $months_s[$month].' '.$year.' г.';
        }
    }  
     
  6. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    с версии 5.0.25 mysql поддерживает локаль lc_time_names с которой можно указать язык даты, если нужна дата на русском то перед запросом даты выполнить запрос изменения языка, примеры запросов:
    Код:
    ##13 апреля 2010
    SET lc_time_names = 'ru_RU';
    SELECT LOWER(DATE_FORMAT(NOW(),'%e %M %Y')) date;
    
    ##13 Апреля 2010
    SET lc_time_names = 'ru_RU';
    SELECT DATE_FORMAT(NOW(),'%e %M %Y') date;
    
    ##13 апреля, вторник
    SET lc_time_names = 'ru_RU';
    SELECT LOWER(DATE_FORMAT(NOW(),'%e %M, %W')) date;
    
    SET lc_time_names = 'ru_RU';
    SELECT LOWER(DATE_FORMAT('2010-04-13','%e %M, %W')) date;
    
    подробнее

    Перейти по ссылке
     
  7. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    об этом давно известно а что если хостер был добрый)) и ... ну в общем только инглиш на борту!)

    для таких целей я когда написал класс
    вот сслыка на тему которую я когда завел
    и там выложена масса реализаций
    кто как может

    Перейти по ссылке
     
Статус темы:
Закрыта.