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

Статус
В этой теме нельзя размещать новые ответы.
Z

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;
}
 
а нету решения чтобы она еще писала

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

Код:
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;
}
 
Вот с названиями месяцев и т.д.
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.' г.';
    }
}
 
Поправочка прислана мне в ПМ от пользователя Для просмотра ссылки Войди или Зарегистрируйся
есть ошибочка
в мускл базе дата лежит в виде 2010-03-07. Чтобы все работало надо немного поправить
$day = (int)$tmp[2];
$month = (int)$tmp[1];

у меня не хватает постов чтобы там сразу написать.
Вот исправленный вариант:
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.' г.';
    }
}
 
с версии 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;
подробнее
 
об этом давно известно а что если хостер был добрый)) и ... ну в общем только инглиш на борту!)

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

Для просмотра ссылки Войди или Зарегистрируйся
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху