Думаю, многим, кто работал с датами в своих скриптах знакома такая проблема: в MySQL дата хранится в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС – и это нельзя просто так вывести пользователю, он не разберется. Нужно, чтобы дата выводилась в общепринятом (в России) формате: ДД-ММ-ГГГГ ЧЧ:ММ:СС.

Я попробовал решить эту проблему самым простым путем.

Погуглив, я удивился: некоторые программисты пишут целые классы для преобразования дат и т.п. Зачем так сложно? В пределах одного проекта понадобится один-два, ну от силы три формата даты и все… Я написал одну функцию, которая меня совершенно устроила и была применена на некоторых моих сайтах.

// Функция преобразования даты.
function data_convert ($data, $year, $time, $second){
$res = "";
$part = explode(" " , $data);
$ymd = explode ("-", $part[0]);
$hms = explode (":", $part[1]);
if ($year == 1) {$res .= $ymd[2]; $res .= ".".$ymd[1]; $res .= ".".$ymd[0];}
if ($time == 1) {$res .= " ".$hms[0]; $res .= ":".$hms[1]; if ($second == 1) $res .= ":".$hms[2];}
return $res;
}

Как ее применить? Легко. Предположим, мы прочитали что-то из БД:

$str = mysql_fetch_array (mysql_query («…»));

И тут у нас записана дата: $str[‘dt’] (в формате MySQL, конечно, т.е. ГГГГ-ММ-ДД ЧЧ:ММ:СС).

Чтобы везде, где выводится дата, она выводилась в нужном нам формате, напишем:

$str[‘dt’] = data_convert ($str[‘dt’], 1, 1, 0);

Получаем красивую дату: ДД-ММ-ГГГГ ЧЧ:ММ.

Что за параметры у функции? Глядя на код и так все понятно, но поясню дополнительно: первый это дата в формате MySQL (текстовая строка), следующие три могут быть 0 или 1. Второй параметр: если 1, выводит год. Третий: если 1, выводит часы и минуты. Четвертый: если 1, выводит секунды.

Думаю, все довольно прозрачно.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here