|
Думаю, многим, кто работал с датами в своих скриптах знакома такая проблема: в 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, выводит секунды.
Думаю, все довольно прозрачно.
Оставьте свой комментарий
|
|
Что здесь почитать?
1. Разработки.
1.1 Плагин "Я не робот"
1.2 Плагин "Код Adsense прямо в пост"
2. Заработай.
2.1 Блогун: 20$ в день
2.2 Уходим от налогов в Sape
2.3 Хватит думать, пора зарабатывать
3. Акции и конкурсы.
3.1 Ссылка за "Рабочий стол"
Показать весь список.
полный список в процессе наполнения ;) посмотрите чуть позже
-->
|
17.02.2008 в 5:52 пп
Очень удачная и простая и удачная функция…
Очень выручил и сэкономил кучу времени…..
Спасибо!!!
18.02.2008 в 12:06 дп
07.03.2008 в 10:31 дп
function data_convert($data, $year=1, $time=0, $second=0)
{
$res = «»;
$part = explode(» » , $data);
$ymd = explode («-», $part[0]);
if (isset($part[1])) $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[’dt’] = data_convert ($str[’dt’]); //ДД-ММ-ГГГГ
$str[’dt’] = data_convert ($str[’dt’],0,1,1); //ЧЧ:ММ
07.03.2008 в 11:02 дп
14.09.2008 в 10:24 дп
$month = array («», «Января», «Февраля», «Марта», «Апреля», «Мая», «Июня», «Июля», «Августа», «Сентября», «Октября», «Ноября», «Декабря»);
$result = «»;
$part = explode(» » , $data);
$ymd = explode («-», $part[0]);
if (isset($part[1])) $hms = explode («:», $part[1]);
if ($year == 1) {$result .= $ymd[2]; $result .= » «.$month[$ymd[1]]; $result .= » «.$ymd[0];}
if ($time == 1) {$result .= » «.$hms[0]; $result .= «:».$hms[1]; if ($second == 1) $result .= «:».$hms[2];}
return $result;
}
echo $myrow['burn_date'] = data_convert($myrow['burn_date'])
21.09.2008 в 1:46 дп
23.09.2008 в 5:31 пп
if ($year == 1) {$result .= $ymd[2]; $result .= ” “.$month[$ymd[1]]; $result .= ” “.$ymd[0];}
Чтобы отображались все месяцы необходимо писать так
if ($year == 1) {$result .= $ymd[2]; $result .= » «.$month[(int)$ymd[1]]; $result .= » «.$ymd[0];}
30.09.2008 в 6:14 пп
26.03.2009 в 5:21 пп
14.04.2009 в 3:46 пп
$month = array(1=>»января», 2=>»февраля», 3=>»марта», 4=>»апреля», 5=>»мая», 6=>»июня», 7=>»июля», 8=>»августа», 9=>»сентября», 10=>»октября», 11=>»ноября», 12=>»декабря»);
$int_month = date(‘n’, $time);
$date = date(‘\%\s d \%\s Y, \%\s H:i:s’, $time);
echo sprintf($date, ‘Сегодня:’, $month[$int_month], ‘время:’);
18.04.2009 в 12:58 дп
select date_format(datetime,’%d.%m.%Y’) from table;
31.10.2009 в 1:21 дп
mysql_query(«SELECT * FROM tbl_1 WHERE id_tbl_2 = $id_tbl_2″)
select date_format(datetime,’%d.%m.%Y’) from table;
27.01.2010 в 12:23 дп
17.03.2010 в 4:02 пп
>>mysql_query(”SELECT * FROM tbl_1 WHERE id_tbl_2 =
>>$id_tbl_2?)
01.04.2010 в 1:35 пп
08.06.2010 в 8:33 пп
С уважением.