Форум -> PHP, JS, MySQL -> Помогите разобраться с датами в PHP |
Помогите разобраться с датами в PHP |
---|
Daigo | Дата: 30.04.2009, в 09:38 | Сообщение №1 |
НовичокПользователь №: 486 Сообщений: 18
| Прошу помощи, хотя бы в виде подсказки по следующему вопросу:
Вытаскиваю из базы (поле типа DateTime) дату, мне нужно проверить на сколько стара эта дата, т.е. сколько времени прошло от этой даты до настоящего времени.
С легкостью решал эту проблему на других языках программирования, а в PHP не получается. |
|
|
Serg_pnz | Дата: 30.04.2009, в 11:17 | Сообщение №2 |
АдминистраторПользователь №: 1 Сообщений: 2243
| Daigo, в каком формате вытаскиваешь дату? 1234567890 или 2009-04-30? | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
Daigo | Дата: 04.05.2009, в 09:19 | Сообщение №3 |
НовичокПользователь №: 486 Сообщений: 18
| Serg_pnz, 2009-04-30, а как ее вытащить в "1234567890", я так понимаю что это кол-во чего-то от какой-то даты/точки? |
|
|
Serg_pnz | Дата: 04.05.2009, в 09:58 | Сообщение №4 |
АдминистраторПользователь №: 1 Сообщений: 2243
| http://www.php.su/functions/?mktime
Т.е. тебе надо 2009-04-30 эксплодить по дефису и обрабатывать mktime, на выходе получишь "1234567890" | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
Sunvas | Дата: 04.05.2009, в 15:11 | Сообщение №5 |
ПрофиПользователь №: 181 Сообщений: 554
| Цитата | .е. тебе надо 2009-04-30 эксплодить по дефису и обрабатывать mktime, на выходе получишь "1234567890" |
Зачем такие извращения? О_О Можно же проще:
PHP - Код | 1 2 3
| <?php SELECT TO_DAYS(NOW() - `date`) ... ?> |
|
|
|
Daigo | Дата: 05.05.2009, в 14:17 | Сообщение №6 |
НовичокПользователь №: 486 Сообщений: 18
| Sunvas, PHP - Код | 1 2 3
| <?php SELECT TO_DAYS(NOW() - `date`) ... ?> |
Так не хотелось бы делать, т.к. целью является проставление признака новой статьи в модуле pages (Совсем новая, недельной давности и месячной).
Соответственно это три дополнительных запроса на каждой страничке сайта.
Цитата | .е. тебе надо 2009-04-30 эксплодить по дефису и обрабатывать mktime, на выходе получишь "1234567890" |
Спасибо, попробую разобраться. |
|
|
Serg_pnz | Дата: 05.05.2009, в 14:53 | Сообщение №7 |
АдминистраторПользователь №: 1 Сообщений: 2243
| Daigo, есть же стандартная функция в слаеде по этому поводу new_graphic | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
Sunvas | Дата: 05.05.2009, в 15:27 | Сообщение №8 |
ПрофиПользователь №: 181 Сообщений: 554
| Daigo, ничего не понимаю. Если нужно делить по признаку, то все просто:
Код | 1
| SELECT TO_DAYS(NOW() - `date`) |
Далее:
PHP - Код | 1 2 3 4 5 6 7 8 9 10 11
| <?php list($d,...)=$db->sql_fetchrow(); if($d>10) //Старая elseif ($d>5) //Больше недели elseif($d>1) //Новая else //Совсем новая ?> |
|
|
|
patriot | Дата: 05.05.2009, в 16:03 | Сообщение №9 |
УчастникПользователь №: 349 Сообщений: 92
| есть в PHP такая функция:
int strtotime ( string time [, int now] )
Первым параметром функции должна быть строка с датой на английском языке, которая будет преобразована в метку времени относительно метки времени, переданной в now, или текущего времени, если аргумент now опущен. В случае ошибки возвращается -1.
PHP - Код | 1 2 3
| <?php $date=strtotime('2009-04-30'); ?> |
Функция strtotime() использует GNU формат даты
Sunvas, вариант, конечно.. но в случае, когда также нужно вывести саму дату, придется возвращать дополнительное поле, что увеличит трафик (в теории, конечно - реально вряд ли это будет заметно) |
|
|
|
Вы не можете ответить в тему анонимно, пожалуйста, войдите или зарегистрируйтесь!
|