PHP преобразовать дату из формата MySQL в нормальный вид

Возникла необходимость перевести дату из базы MySQL вида «2011-06-10 15:18:00» в читабельный для пользователя вид, средствами php. (Как это сделать средствами MySQL можно прочитать здесь). Вот в такой «4 июня 2011, 14:57».

Заметка скорее для закладок и экономии времени так как такая проблема встречается часто, а решение вспоминается долго:)

Ниже представлен способ.

# Переменная с датой из базы
$mysqldate = '2011-06-10 15:18:00'; 

# Перевод даты из базы  в формат времени Unix 
# получается примерно такое 1307719080
$time = strtotime($mysqldate);      

# Создаем ассоциативный массив где каждому числу месяца присваем название месяца
$month_name = array( 1 => 'января', 2 => 'февраля', 3 => 'марта', 
		4 => 'апреля', 5 => 'мая', 6 => 'июня', 
		7 => 'июля', 8 => 'августа', 9 => 'сентября', 
		10 => 'октября', 11 => 'ноября', 12 => 'декабря' 
				   );

#Получаем название месяца, здесь используется наш созданный массив
$month = $month_name[ date( 'n',$time ) ]; 
				   
$day   = date( 'j',$time ); # С помощью функции date() получаем число дня
$year  = date( 'Y',$time ); # Получаем год
$hour  = date( 'G',$time ); # Получаем значение часа
$min   = date( 'i',$time ); # Получаем минуты
		
$date = "$day $month $year, $hour:$min";  # Собираем пазл из переменных

echo "Дата: ".$date; #Выводим преобразованную дату на экран

Комментарии

11 комментариев

  • А можно не изобретать велосипед:

    /* Установливаем русскую локаль */
    setlocale(LC_ALL, ‘ru_RU.KOI8-R’);

    /* друние варианты */
    #setlocale(LC_ALL, ‘ru_RU.CP1251’);
    #setlocale(LC_ALL, ‘ru_RU.UTF-8’);

    $mysqldate = ‘2011-06-10 15:18:00’;
    $time = strtotime($mysqldate);
    echo strftime(«%A %e %B %Y», $time);

  • А у меня вот не выходит, правда из базы у меня выходит не тире между числами, а слэш «/»

  • Очень помогла ваша статья, как раз то что нужно… мне нужно было вывести дату регистрации пользователя и БД… в базе она была в виде числа 1409715555 … бился, бился и с вашей помощью получилось: 3 сентября 2014, 13:39 …. Спасибо! Очень с экономил много времени.

  • Немного допилил, чтобы показывал «Сегодня, 12:14» например)) и сделал как функцию, чтобы было удобнее пользоваться при многократном обращении
    Спасибо за статью!
    function convertDateTime ($mysqldate) {

    $time = strtotime($mysqldate);

    $month_name = array( 1 => ‘января’, 2 => ‘февраля’, 3 => ‘марта’,
    4 => ‘апреля’, 5 => ‘мая’, 6 => ‘июня’,
    7 => ‘июля’, 8 => ‘августа’, 9 => ‘сентября’,
    10 => ‘октября’, 11 => ‘ноября’, 12 => ‘декабря’
    );

    $month = $month_name[ date( ‘n’,$time ) ];

    $day = date( ‘j’,$time ); # С помощью функции date() получаем число дня
    $year = date( ‘Y’,$time ); # Получаем год
    $hour = date( ‘G’,$time ); # Получаем значение часа
    $min = date( ‘i’,$time ); # Получаем минуты
    $mm = date( ‘m’,$time );

    $date = «$day-$mm-$year»;
    IF ($date == date(‘d-m-Y’)) {
    $date = «сегодня, $hour:$min»;
    }
    else {
    $date = «$day $month $year, $hour:$min»;
    }
    return $date;
    }

Добавить комментарий

Ваш e-mail не будет опубликован.

Sidebar