Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Дата => timestamp


Автор: Loncaster 10.3.2008, 20:29
Вообщем есть на сайте форма, в которой кроме прочей информации, нужно в текстовом поле указать дату события. Например: 22/03/2008. В базе же я хочу хранить эту дату в виде таймштампа.  

Код

$date = strtotime('22/03/2008');
dump(date('d/m/y',$date));

На выводе: 
VAR 1
01/01/70

Если же пишем вот так: 
Код

$date = strtotime('03/22/2008');
dump(date('d/m/y',$date));


То на выходе получаем правильно 
VAR 1
22/03/08

Но вводят-то как правило так как в первом случае, а тут получается надо ставить месяц на первое место, а потом число.... 

Может какой-то иной способ для данной задачи есть ? 

Автор: Assessor 10.3.2008, 20:39
а почему обязательно текстовое поле использовать? почему select-ом не сделать? 

Автор: Feldmarschall 10.3.2008, 20:49
explode()+mktime()

но я бы дату в виде секунд хранить в базе не стал.

Автор: SelenIT 10.3.2008, 20:50
Цитата(Loncaster @  10.3.2008,  20:29 Найти цитируемый пост)
Например: 22/03/2008

Это, если я не ошибаюсь, французский формат? http://php.net/strtotime
Цитата

The function expects to be given a string containing a US English date format

т.е. сначала месяц, потом число. Для французского и русского/немецкого формата (число/месяц, число.месяц) придется explode-ить строку руками и подставлять в mktime.

А вообще тема непростая, вот http://habrahabr.ru/blog/ui_design_and_usability/37222.html недавно высказывалось немало хороших (и не очень) идей...

Автор: Loncaster 10.3.2008, 20:52
Цитата(Feldmarschall @ 10.3.2008,  20:49)
explode()+mktime()

но я бы дату в виде секунд хранить в базе не стал.

Почему не стал бы ?  Очень удобно оперировать потом выборкой дат событий не менее чем за 5 дней до сегодняшней даты и т.д.... Помоему достаточно удобно.

Автор: Feldmarschall 10.3.2008, 21:00
Loncaster, удобно хранить дату, а не дату+время, когда нужна только дата.
удобно средствами БД оперировать выборкой с датой. 
удобно, в конце концов, когда дату можно прочесть безо всяких преобразований.
вот это - удобно. 
а чикаться с секундами (тем более, не зная команду mktime) - это называется не "удобно", а "на любителя".

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

Автор: Loncaster 12.3.2008, 22:32
Ув. Feldmarschall за помощь спасибо. Я и не отрицаю опыт в пхп у меня маловат, бывает и такое ;)  
В любом случае, реализовал все через datetime .. 

Автор: Feldmarschall 13.3.2008, 10:56
Если ты говоришь, что пользователь вводит дату, по почему хранишь не в date, а в datetime? 


Автор: MoLeX 13.3.2008, 11:01

M
MoLeX
Модератор: Давайте вернёмся к теме обсуждения.

оффтоп из последних двух ответов вырезал. 
Loncaster, не где тебя идиотом не обзывали, так что зря не кипитсиь...

Автор: Loncaster 15.3.2008, 21:08
Цитата(Feldmarschall @ 13.3.2008,  10:56)
Если ты говоришь, что пользователь вводит дату, по почему хранишь не в date, а в datetime?

Видимо потому что решил хранить и время тоже.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)