[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вытащить отдельно дату и время из DATETIME
Гость_Павел
Добрый день.

Вытаскиваю из базу данных поле:
dt_load DATETIME DEFAULT NULL


Таким образом:

$query = 'SELECT id, dt_load FROM photos';
$result = $db_conn->query($query);
$row = $result->fetch_assoc();
$dt_load = $row['dt_load'];
echo $row['dt_load']


В этом случае дата и время выводится следующим образом:
2010-09-16 10:29:49

А как сделать форматированный вывод? Например:
16 сентября 2010 года, в 10:29:49

Спасибо, час уже пытаюсь разобраться...



Спустя 28 минут, 16 секунд (16.09.2010 - 14:48) inpost написал(а):
$dt = $myrow['date']; // Присвоение переменной $dt значения поля datetime из базы blogg
$yy = substr($dt,0,4); // Год
$mm = substr($dt,5,2); // Месяц
$dd = substr($dt,8,2); // День
if ($mm == "01") $mm1="января";
if ($mm == "02") $mm1="февраля";
if ($mm == "03") $mm1="марта";
if ($mm == "04") $mm1="апреля";
if ($mm == "05") $mm1="мая";
if ($mm == "06") $mm1="июня";
if ($mm == "07") $mm1="июля";
if ($mm == "08") $mm1="августа";
if ($mm == "09") $mm1="сентября";
if ($mm == "10") $mm1="октября";
if ($mm == "11") $mm1="ноября";
if ($mm == "12") $mm1="декабря";
$hours = substr($dt,11,5); // Время
$ddtt = $dd." ".$mm1." ".$yy." г. ".$hours; // Конечный вид строки

Спустя 15 минут, 50 секунд (16.09.2010 - 15:04) Гость_Павел написал(а):
Спасибо большое, inpost!

Спустя 1 месяц, 21 день, 7 часов, 15 минут, 37 секунд (7.11.2010 - 23:20) only написал(а):
Не пойму в чём ошибка?

Нужно что бы не отображались нули в дате или в месяце если они не были введены в базу.

Пример:
известна дата, только месяц и год - >>> 00 сент. 1999 >>> Нужно чтобы только было >>> сент. 1999 >>>
или только год >>> 00 1994 >>>

Отображается как раз с нулями, и так же отображаются нули 00 0000, если не введена дата совсем.

если введены все параметры, то отображается всё корректно 27 мар. 1997



function formatage_date($date_total) {

$date_finale='';
$date_du_jour=date('Y-m-d');

$yy = substr($date_total,0,4); // Год
$mm = substr($date_total,5,2); // Месяц
$dd = substr($date_total,8,2); // День
if ($mm == "01") $mm1="января";
if ($mm == "02") $mm1="февраля";
if ($mm == "03") $mm1="марта";
if ($mm == "04") $mm1="апреля";
if ($mm == "05") $mm1="мая";
if ($mm == "06") $mm1="июня";
if ($mm == "07") $mm1="июля";
if ($mm == "08") $mm1="августа";
if ($mm == "09") $mm1="сентября";
if ($mm == "10") $mm1="октября";
if ($mm == "11") $mm1="ноября";
if ($mm == "12") $mm1="декабря";

if ($date_du_jour<$date_total) echo "planned for";

$date_array=explode('-',$date_total);


if($date_array[2]==0) // если день не доступен

{
if($date_array[1]==0) // если месяц не доступен
{
if($date_array[0]==0) { $date_finale=''; } // если год не доступен
else { $date_finale= $date_array[0]; }
}


if ($mm == "01") $mm1="январь";
if ($mm == "02") $mm1="февраль";
if ($mm == "03") $mm1="март";
if ($mm == "04") $mm1="апрель";
if ($mm == "05") $mm1="май";
if ($mm == "06") $mm1="июнь";
if ($mm == "07") $mm1="июль";
if ($mm == "08") $mm1="август";
if ($mm == "09") $mm1="сентябрь";
if ($mm == "10") $mm1="октябрь";
if ($mm == "11") $mm1="ноябрь";
if ($mm == "12") $mm1="декабрь";
else
{
$date_finale=date("M Y", mktime(0, 0, 0, $date_array[1], 0, $date_array[0]));
}
}

else
{
$date_finale=date("jS M Y", mktime(0, 0, 0, $date_array[1], $date_array[2], $date_array[0]));
}

$date_finale = $dd." ".$mm1." ".$yy." "; // Конечный вид строки

return $date_finale;


Спустя 29 минут, 23 секунды (7.11.2010 - 23:49) inpost написал(а):
Каждая часть - массив, если она равна нулю, просто не выводи.
if(!empty(int)$date_array[1])) echo $date_array[1], в данном случае ноль будет считаться как empty.

Спустя 22 минуты, 42 секунды (8.11.2010 - 00:12) only написал(а):
Цитата (inpost @ 7.11.2010 - 20:49)
Каждая часть - массив, если она равна нулю, просто не выводи.
if(!empty(int)$date_array[1])) echo $date_array[1], в данном случае ноль будет считаться как empty.


Почему то не хочет воспринимать сам код, пишет синтаксическая ошибка

Спустя 2 часа, 1 минута, 13 секунд (8.11.2010 - 02:13) ИНСИ написал(а):
Гость_Павел не мучайся, можно сделать куда проще, в самом запросе можно задать формат вывода даты, в твоем случае это так:

$query = "SELECT `id`, `dt_load`, DATE_FORMAT(`date`,'%d.%m.%Y') AS `date` FROM photos";


и чтобы вывести дату, надо выводить просто переменную $date. Если хочешь больше узнать, то смотри тут: http://phpclub.ru/mysql/doc/date-and-time-functions.html

Спустя 49 минут, 12 секунд (8.11.2010 - 03:02) inpost написал(а):
welbox2
"Скопи-пасти не его код, а мой =)))".

only
Проследи количество скобок, я там забыл поставить одну скобку, и это факт! Сам сделай... без труда не вытянешь и рыбки из пруда!

Спустя 20 часов, 22 минуты, 57 секунд (8.11.2010 - 23:25) only написал(а):
inpost

Или я сегодня просто устал или не в то место пытаюсь вставить код. завтра попробую ещё, но Со скобками вроде бы всё нормально.

И если не трудно поясни что значит if(!empty(int) , интересует именно (int)

И в базе поле формата Date, он забивается в таком виде 2010-12-00, то есть день забит но там 00.

Спустя 31 минута, 50 секунд (8.11.2010 - 23:57) twin написал(а):
if ($mm == "01") $mm1="январь";
if ($mm == "02") $mm1="февраль";
if ($mm == "03") $mm1="март";
if ($mm == "04") $mm1="апрель";
if ($mm == "05") $mm1="май";
if ($mm == "06") $mm1="июнь";
if ($mm == "07") $mm1="июль";
if ($mm == "08") $mm1="август";
if ($mm == "09") $mm1="сентябрь";
if ($mm == "10") $mm1="октябрь";
if ($mm == "11") $mm1="ноябрь";
if ($mm == "12") $mm1="декабрь";

Это что???? Расстрелять без суда и следствия и отправить изучать массивы.

Спустя 1 час, 26 минут, 59 секунд (9.11.2010 - 01:24) Sanchopansa написал(а):
народ вы что? это что такое?
$yy = substr($dt,0,4); // Год
$mm = substr($dt,5,2); // Месяц
$dd = substr($dt,8,2); // День

или это
$date_array=explode('-',$date_total);


вы что ни кто не слышали про функцию strtotime?
Вот пример проще
$dt = "2010-09-16 10:29:49";
$month_arr = array(
'01'=>'января',
'02'=>'февраля',
'03'=>'марта',
'04'=>'апреля',
'05'=>'мая',
'06'=>'июня',
'07'=>'июля',
'08'=>'августа',
'09'=>'сентября',
'10'=>'октября',
'11'=>'ноября',
'12'=>'декабря',
);


$timestamp = strtotime($dt);
echo date('d', $timestamp) . ' ' . $month_arr[date('m', $timestamp)] . ' ' .date('Y', $timestamp) . ' года, в ' . date('H:i:s', $timestamp);


а для вывода даты при возможности не введенных месяцы или даты такой вариант с strtotime не катит sad.gif

Спустя 17 минут, 7 секунд (9.11.2010 - 01:41) Sanchopansa написал(а):
Воо накидал проверку
$dt = "2010-09-00 00:00:00";
$patern = '/(\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2}):(\d{2})/';
preg_match_all($patern, $dt, $match);

$month_arr = array(
'01'=>'января',
'02'=>'февраля',
'03'=>'марта',
'04'=>'апреля',
'05'=>'мая',
'06'=>'июня',
'07'=>'июля',
'08'=>'августа',
'09'=>'сентября',
'10'=>'октября',
'11'=>'ноября',
'12'=>'декабря',
);


$year = $month = $day = $time = '';
if (intval($match[1][0]))
{
$year = $match[1][0] . " года";
}
if (intval($match[2][0]))
{
$month = $month_arr[$match[2][0]] . " ";
}
if (intval($match[3][0]))
{
$day = $match[3][0] . " ";
}
if (intval($match[4][0]) || intval($match[5][0]) || intval($match[6][0]))
{
$time = ", в " . $match[4][0] . ":" . $match[5][0] . ":" . $match[6][0];
}
echo $day.$month.$year,$time;

Спустя 20 часов, 46 минут, 4 секунды (9.11.2010 - 22:27) only написал(а):
Sanchopansa

Большое за отзывчивость, обязательно учту ваши замечания.

+ обязательно нажму, как только постов наберу.

Программировать начал совсем недавно, поэтому много и не знаю, но думаю быстро научиться, ещё раз спасибо. biggrin.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.