Публикации с тегом "дата"

Получение даты из MySQL в PHP

Как известно, в MySQL есть два основных типа данных для хранения дат: date и datetime. Второй вариант, по сути, является расширенным вариантом первого и позволяет помимо даты хранить и время. При извлечении из MySQL данных такого типа мы получаем строки соответственно следующих форматов:

2012-03-03
2012-03-03 12:00:00

Однако в PHP в большинстве функциях работы с датами используется так называемый формат даты Unix timestamp, представляющий из себя число — количество секунд между "эпохой Юникс" (полночью первого января 1970 года) и текущим временем.

Можно при помощи парсинга получить из вышеупомянутых строк значения года, месяца и т.д. и передать их в PHP-функцию mktime, но я предлагаю вариант проще. Существует MySQL-функция Unix_timestamp, которая позволяет преобразовать дату из формата MySQL в формат Unix timestamp на этапе запроса. Используется следующим образом:

SELECT created                 AS created_mysql,
       Unix_timestamp(created) AS created_unix
FROM   articles;

Русская дата на PHP

Хочу поделиться функцией, которая позволяет сформировать дату с локализованными месяцами и днями недели:

function rusdate($d, $format = 'j %MONTH% Y', $offset = 0)
{
    $montharr = array('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');
    $dayarr = array('понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье');
 
    $d += 3600 * $offset;
 
    $sarr = array('/%MONTH%/i', '/%DAYWEEK%/i');
    $rarr = array( $montharr[date("m", $d) - 1], $dayarr[date("N", $d) - 1] );
 
    $format = preg_replace($sarr, $rarr, $format); 
    return date($format, $d);
}

Первый параметр — юникс-дата, второй — формат выводимой даты. Оба параметра идентичны параметрам PHP-функции date(), однако в формате можно передать два дополнительных шаблона:

%MONTH% — русское название месяца (родительный падеж)
%DAYWEEK% — русское название дня недели