Отобразить дату из MySQL в формате 17-12-2005

Гриша К.

Новичок
Отобразить дату из MySQL в формате 17-12-2005

Здравствуйте.
Подскажите пожалуйста, как дату из MySQL в формате 2005-12-17 отобразить на странице в формате 17-12-2005 (имеется в виду порядок день-месяц-год)

Вот пример кода:

PHP:
$query="SELECT * FROM `catalogue` where category_id like '".$category_id."%' ...";
$result=@mysql_query($query);

	while($row=@mysql_fetch_array($result)) 
	{
  echo "<p>'.$row['date'].'</p>"; //Вот тут вот хочу вывести дату в нужном формате
  echo "<p>'.$row['title'].'</p>";
  echo "<p>'.$row['name'].'</p>\n";

//echo date($row['date'], '%d.%m.%Y'); - Пробовал так
	}
Почитал про date_format:
$query="SELECT DATE_FORMAT(date, '%d.%m.%Y') FROM `catalogue` where category_id like '".$category_id."%' ...";
$result=@mysql_query($query);

Я даже здесь не смог ее вывести, а уж в цикле тем более.

На форуме искал пример, так и не нашел, в книге на шел, только тот пример который с DATE_FORMAT написал.
 

Гриша К.

Новичок
white phoenix, спасибо за отвтет.

Ну я не понял что я могу сделать с date()

echo date("m.d.y"); //Просто текущая дата

echo date($row['date'], '%d.%m.%Y'); - Выводит как есть в БД

Ну и то же самое echo date($row['date'], "m.d.y");

Я никак не могу понять ну как же сделать из даты 2005-17-12, дату 12-12-2005

Если вы просто знаете ответ, напишите пожалуйста, наверняка это в одну или несколько строк делается.

-~{}~ 17.12.05 04:07:

white phoenix, по ссылке, я вот такой сриптище нашел, он переделывает формат даты, он из даты "2005-07-01", делает 14/10/2010, непойму почему так.


PHP:
$old_date = "2005-07-01 12:35:01";

$old_date = ereg_replace('[^0-9]', '', $old_date);

//Extract the different elements that make up the date and time
$_year = substr($old_date,0,4);
$_month = substr($old_date,5,2);
$_day = substr($old_date,8,2);
$_hour = substr($old_date,11,2);
$_minute = substr($old_date,14,2);
$_second = substr($old_date,17,2);

$layout = "d/m/Y";

//Combine the date function with mktime to produce a user-friendly date & time
$new_date = date($layout, mktime($_hour, $_minute, $_second, $_month, $_day, $_year));
echo $new_date;
-~{}~ 17.12.05 04:13:

=====================================


Вот скоратил до такого:

PHP:
$date='2005-11-03';
  $new_date = date('d-m-Y', mktime($date));
echo $new_date;
Выводит такую дату: 10-03-2006

Неужели, чтобы переделать дату нужна куча знаний, неужели этого могут сделать очень мало людей.
Надеюсь, на вашу помощь, пожалуйста подскажите.

-~{}~ 17.12.05 04:23:

====================================
Нельзя так, нашел тут:
$date='2005-11-03';
$new_date = date('d-m-Y', mktime($date));

Вот:
PHP:
$old_date = "2005-07-01";
$old_date = ereg_replace('[^0-9]', '', $old_date);

$_year = substr($old_date,0,4);
$_month = substr($old_date,5,2);
$_day = substr($old_date,8,2);
$_hour = '0';
$_minute = '0';
$_second = '0';

$new_date = date('d/m/Y', mktime($_hour, $_minute, $_second, $_month, $_day, $_year));
echo $new_date;
Время полно, втавать в 9:00, а я не могу лечь пока эту дату гребаную не сделаю.
Вот и пишу здесь ход своих мыслей, в надежде, что самому непридется рыться, а кто-нибуть готовое напишет.
А то я со своим методом тыка, на пару дней могу затянуть.
 

Royal Flash

-=MaestrO=-
//Extract the different elements that make up the date and time
$_year = substr($old_date,0,4);
$_month = substr($old_date,5,2);
$_day = substr($old_date,8,2);
$_hour = substr($old_date,11,2);
$_minute = substr($old_date,14,2);
$_second = substr($old_date,17,2);
Код логичесски не верен, по крайней мере для твоего примера... Разберись, как работают 2 функции, чтобы понять рабочий вариант из примера ниже:

http://ua2.php.net/substr
http://ua2.php.net/ereg_replace

$old_date = "2005-07-01 12:35:01";
$old_date = ereg_replace('[^0-9]', '', $old_date);
$_year = substr($old_date,0,4);
$_month = substr($old_date,4,2);
$_day = substr($old_date,6,2);
echo $_day.'-'.$_month.'-'.$_year;
 

Гриша К.

Новичок
Royal Flash, спасибо, что ответили.
Я как раз так и начал проверять.
В описанном выше коде, который я взял по ссылке, там неверно берутся числа в переменных $_month и $_day (а это руководсвто!).

Вот готовый вариант функции:
PHP:
function get_date($old_date)
{
	$old_date = ereg_replace('[^0-9]', '', $old_date); //Переделываем дату в формат ггггммдд

	$_year = substr($old_date,0,4); //Берем из переделанной даты цифры года
	$_month = substr($old_date,4,2); //Берем из переделанной даты цифры месяца
	$_day = substr($old_date,6,2); //Берем из переделанной даты цифры дня

	$new_date = date('d.m.Y', mktime('0', '0', '0', $_month, $_day, $_year)); //Переделываем в нужный формат
	return $new_date;
}
Выводим:
PHP:
$old_date = "2005-12-17";

echo get_date($old_date);
:D Я МАСТЕР, УУУУУ : )
Все спать пойду.
 

Гриша К.

Новичок
Royal Flash - спасибо большое за помощь. Это вообще красивый вариант.
Вот только, знали же вы ответ, а мне наводочки давали, вот так всегда (я не упрекаю, не подумайте).
А у меня знаний в PHP на самрм деле-то совсем мало. Я например интернет-магазин делать начал когда, я php не знал, я книгу открыл на 500 странице где есть пример, а потом уже, смотрел в книге остальные разделы, по ходу изменения кода.
Так же и здесь. Я же не знаю, что есть такие функции substr и ereg_replace, а что explode есть, массивы делает тем более.
Я просто думаю, что есть спец. фунция в PHP для изменения даты.
И если бы не этот форму и еще один. Я бы несправился с тем всем, что пришлось делать.
Я программировать не хочу и не хотел, но мне пришлось, потому что когда я хотел заказать создание интернет-магазина мне назвали цену 4000$, вот и начал сам делать, ну и щас получается, чего-то надо делать, делаю сам деньги жалко платить, когда сам могу.

SiMM, спасибо за ответ.
Но эта собачка не где непопадя стоит. У меня везде такой result, я из книги очен хорошей брал. Ниже напишу.

$query="SELECT DATE_FORMAT(date, '%d.%m.%Y') FROM `catalogue` where category_id like '".$category_id."%'";
$result=@mysql_query($query);

Я не смог вытянуть значение даты отсюда.
Я чего-то запутался. Вот если бы вместо DATE_FORMAT(date, '%d.%m.%Y') была бы *, я бы сдела так:
$row=@mysql_fetch_array($result)
echo $row['date']; (стобец такой есть у меня)

Подскажите пожалуйста, как из описанной $query вытянуть запрошенное значение даты.

======================
А книглй я пользую такой:
Разработка Web-приложений с помощью PHP и MySQL
Люк Веллинг
Лора Томсон
- Второе издание - (Щас уже 3 вышло)

Книга супер. Это описание всех функций, примеры, удобный предметный указатель, + все примеры есть на придагаемом диске, согласитесь очень удобно.

Другой такой хорошей книги по PHP я не встричал.
И кстати, я везде замечаю, где присутствует в авторах женщина, там очень подробные описание и примеры (женщины любят все пополочкам, молодцы).
 

SiMM

Новичок
> я из книги очен хорошей брал
Хорошая книга таких советов не даёт. Как и не пишет всякие бредни про stripslashes из базы.

> Подскажите пожалуйста, как из описанной $query вытянуть запрошенное значение даты.
Что из того, что написано в ссылке, которую я тебе дал, ты уже сделал?
 

Фанат

oncle terrible
Команда форума
Royal Flash
что - прямой путь подсказать ума не хватило?
нарываешься на read-only?

-~{}~ 17.12.05 11:21:

white phoenix
почему ссылка на date, а не на date_format?
те же причины, что и у предыдущего героя?
 

chisto_tolyan

Враг народа
PHP:
$query="SELECT DATE_FORMAT(date, '%d-%m-%Y') AS date FROM `catalogue` where category_id like '".$category_id."%'";
$result=mysql_query($query);
$row = mysql_fetch_array($result);
echo $row['date'];
понавыдумывал блин)
 

alexgroff

Новичок
Можно ещё в SQL взять метку времени а потом в срипте её отформатировать date'ом
PHP:
 $query = "SELECT UNIX_TIMESTAMP(date) AS date FROM `catalogue` WHERE category_id LIKE '".$category_id."%'";
$result=mysql_query($query); 
$row = mysql_fetch_array($result);
print date('d m Y', $row['date']);
 

Фанат

oncle terrible
Команда форума
на фоне остальных решений в этом топике, надо сказать, это - ещё ничего...
 

SiMM

Новичок
> А чем плохо?
ОДЗ.
Для большинства систем допустимыми являются даты с 13 декабря 1901, 20:45:54 GMT по 19 января 2038, 03:14:07 GMT. (Эти даты соответствуют минимальному и максимальному значению 32-битового целого со знаком). Для Windows допустимы даты с 01-01-1970 по 19-01-2038.
 

Гриша К.

Новичок
Спасибо всем за ответы.

Попробовал все варианты: chisto_tolyan
и alexgroff.
Понял как выводиь значение $query="SELECT DATE_FORMAT(date, '%d-%m-%Y')..." , если указывется определенный столбец.
Не понял, что лучше использовать DATE_FORMAT(date, '%d-%m-%Y') или UNIX_TIMESTAMP(date)

SiMM, вы все правильно мне говорили, я не внимателен был и недопонял вас.
Хорошая книга таких советов не даёт.
Вы наверное это имели в виду, что я не вижу вывода ошибок, которые запрещает @.
А я подумал сначала, что вы имеете в виду, что @ нельзя там ставить, что это ошибка и из-за нее неработает.

Я вот вашу ссылку не посмотрел, не понял зачем вы мне ее дали. А надо было.
Тогда бы я понял, в какой строке была ошибка (нехватало "as date").
Как и не пишет всякие бредни про stripslashes из базы.
Вот это я не понял.


Фанат,
на фоне остальных решений в этом топике, надо сказать, это - ещё ничего...
А вы не могли бы привести пример покорретнее, я то думаю, например что вариант Royal Flash вполне хорошее, оно мне удобно. Что не корректно? Напишите пожалуйста пример.
И кстати, то решение которое я написал, основу его я взял по этой ссылке http://www.php.net/date - изменения минимальны, структура та же.
 

alexgroff

Новичок
SiMM, я сам использую DATE_FORMAT, а метку времени предложил как вариант и не самый плохой.
я то думаю, например что вариант Royal Flash вполне хорошее, оно мне удобно. Что не корректно?
для этого есть средства MySQL, зачем придумывать велосипед?
Не понял, что лучше использовать DATE_FORMAT(date, '%d-%m-%Y') или UNIX_TIMESTAMP(date)
DATE_FORMAT. Почему? Читай выше!
 

Фанат

oncle terrible
Команда форума
и не самый плохой.
ты читал, вообще, что тебе SiMM написал?
такое ощущение, что нет.

-~{}~ 17.12.05 17:34:

а метку времени предложил как вариант и не самый плохой.
для этого есть средства MySQL, зачем придумывать велосипед?
слушай, ты бы определился сначала, а потом уже писал
 

Гриша К.

Новичок
alexgroff, у меня есть четыре функции где я использую данный вывод форматирования даты (в каждой разный запрос к БД).
Чтобы в каждой функции не дописывать второй раз $query, т.е. в моем случае:
$query1 = "SELECT UNIX_TIMESTAMP(date) AS date FROM `catalogue` WHERE category_id LIKE '".$category_id."%'";
$result1=mysql_query($query1);
$row = mysql_fetch_array($result1);

print date('d m Y', $row['date']);

Мне удобней создать отдельную функцию, и втавлять ее в каждую функцию,т.е.

print get_date($row['date']));
Ну и я предполагаю, что это нормальный вариант и не повлечет за собой каких-то ошибок и т.д.?

Про велосипед : )
:D А кстати, пока так сказать я придумывал велосипед, я узнал три новые функции, это плюс.
И согласитесь, велосипед полезная вещь, а на его основе и мотоцикли сделали, и т.д.

--------------------

И Фанат, ну может быть вы напишите пример, если действительно все описанные здесь варианты сильно не корректы. Для меня все что работает хорошо, а это ведь неправильно.
 
Сверху