Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как изменить формат даты?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Rooner
Отправлено: 26 Сентября, 2011 - 13:23:39
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




В базе mysql есть поле, которое имеет тип datetime, все значения хранятся в таком формате: 2011-09-26 15:31:07
На php извлекаю эту дату из базы и хочу изменить ее формат, с помощью какой функции это можно сделать? Нужно получить дату в формате день.месяц.год без времени.
Пробовал date_format, но в обратку получаю сообщения о не соответствии типов.
 
 Top
Crazy_maker
Отправлено: 26 Сентября, 2011 - 13:28:07
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




а самому написать скрипт сложно что ли? Внеси в переменную, потом просто переставь местами и лишнее удали. А функция
 
 Top
Мелкий Супермодератор
Отправлено: 26 Сентября, 2011 - 13:31:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Rooner пишет:
Пробовал date_format, но в обратку получаю сообщения о не соответствии типов.

Аргументы местами не напутали?
http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]tion_date-format


-----
PostgreSQL DBA
 
 Top
Viper
Отправлено: 26 Сентября, 2011 - 13:33:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Crazy_maker зачем городить огород?

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DATE_FORMAT(`date_field`, '%d.%m.%Y') AS formated_date FROM ...
получим из 2011-09-26 15:31:07 дату вида 26.09.2011
Если нужно год из двух цифр, то заменить %Y на %y


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Rooner
Отправлено: 26 Сентября, 2011 - 13:57:20
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Мелкий, Viper можно и в запросе сразу формат сменить, но это не удобно, мне нужна php функция.
Crazy_maker написать самому то не проблема, но предпалагаю что такая функция уже есть, вот ее название и хотел бы узнать. Не первый раз сталкиваюсь с преобразованием даты, и писать или копировать специальную функцию тоже както не рационально.
Но что поделать, пошел писать Улыбка
 
 Top
Мелкий Супермодератор
Отправлено: 26 Сентября, 2011 - 14:03:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




strtotime да date.
Вот только чем неудобно сразу запросить дату в нужном формате?


-----
PostgreSQL DBA
 
 Top
illy
Отправлено: 26 Сентября, 2011 - 14:11:28
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


Помог: 28 раз(а)




лучше наверное хранить дату в виде 1535345578 который даёт time()
а потом выводить её как хотите.
Да и поиск и сортировка по дате будут быстрее


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
Viper
Отправлено: 26 Сентября, 2011 - 14:13:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Rooner пишет:
но это не удобно, мне нужна php функция.
это удобно и правильно, т.к. mysql отработает быстрее.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Rooner
Отправлено: 26 Сентября, 2011 - 14:20:49
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Мелкий пишет:
strtotime да date.
Вот только чем неудобно сразу запросить дату в нужном формате?


Сразу не всегда удобно, у меня запрос к базе осуществляется с помощью функции, которая используется во многих местах. Изменять эту функцию не хочется, да и не нужно, т.к. в ней будут лишние обработчики висеть для всех остальных запросов.
Чтото не так я делаю с этими date и strtodate:
echo date(strtotime($row["created"], "d.m.Y"));
Warning: strtotime() expects parameter 2 to be long, string given in...

illy пишет:
лучше наверное хранить дату в виде 1535345578 который даёт time()
а потом выводить её как хотите.
Да и поиск и сортировка по дате будут быстрее


Хм, как вариант, хотя это почти тоже самое

Вобщем самое элементарное решение для моего случая это тупая функция:
PHP:
скопировать код в буфер обмена
  1.     $y = $str[0].$str[1].$str[2].$str[3];
  2.     $m = $str[5].$str[6];
  3.     $d = $str[8].$str[9];
  4.     return $d.".".$m.".".$y;

Спасибо всем за советы, впринципе пока вопросов нет.

(Отредактировано автором: 26 Сентября, 2011 - 14:21:21)

 
 Top
LIME
Отправлено: 26 Сентября, 2011 - 14:32:30
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




хотелось бы узнать чем выгоднее использовать тип DATETIME чем TIMESTAMP
или наоборот
 
 Top
Viper
Отправлено: 26 Сентября, 2011 - 14:49:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




LIME имхо удобнее выполнять преобразования над timestamp, хотя опять же имхо timestamp для даты ранее 1970 года смотрится странновато Улыбка


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
LIME
Отправлено: 13 Октября, 2011 - 07:22:29
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




timestamp изменяется автоматически при любом изменении записи
навсякий, для тех кто тоже был не в курсе
 
 Top
Мелкий Супермодератор
Отправлено: 13 Октября, 2011 - 09:30:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




LIME пишет:
timestamp изменяется автоматически при любом изменении записи

Нет. Только тогда это ему указано через on update CURRENT_TIMESTAMP


-----
PostgreSQL DBA
 
 Top
LIME
Отправлено: 13 Октября, 2011 - 09:43:28
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Мелкий перепроверил
CODE (SQL):
скопировать код в буфер обмена
  1. ALTER TABLE  `nomera` ADD  `t` TIMESTAMP NOT NULL

дефолт CURRENT_TIMESTAMP и ON UPDATE CURRENT_TIMESTAMP проставились автоматически
а если
CODE (SQL):
скопировать код в буфер обмена
  1. ALTER TABLE  `nomera` ADD  `t` TIMESTAMP
то нет
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB