сравнение даты

Статус
В этой теме нельзя размещать новые ответы.

Albert22

Старатель
Регистрация
30 Мар 2008
Сообщения
270
Реакции
11
привет
надобно сравнить дату, лежащую где-т в БД с текущей, и в зависимости от того, насколько первая устарела выполнить определенные действия. самый оптимал, что я придумал - это работать с ними не в 24-часовом формате, а перегнать имеющуюся в UNIX формат, а текущую взять при помощи time(), и элементарно их одну из другой вычесть. С предпоследним действием проблем пока не возникало. А вот с конвертацией... Знаю что нужно использовать mktime(), но ей параметры надо передавать в особой последовательности. Чтобы ее выстроить, надо имеющуюся дату (вида 2008-09-04 18:37:17) разбить на отдельные числа. Можно explode()'ом, но это пошло, лучше, естественно, регулярные выражения, но чтоб я знал как его (нужное) составить...

пытался вот что:
PHP:
preg_match_all("/\d*\-\d*-\d* \d*:\d*:\d*/", "2008-09-04 18:37:17", $matches);
print_r($matches);
и вот что получал:
Array ( [0] => Array ( [0] => 2008-09-04 18:37:17 ) )
а вот что хотелось бы:
Array ( [0] => Array ( [0] => 2008 ) ( [1] => 09 )( [2] => 04 )( [3] => 18 )( [4] => 37 ) и т. д.)
пожалуйста, помогите с этим разобраться!

Добавлено через 31 минуту
вот что помогло гы гы
PHP:
$matches=preg_split("/\D/", "2008-09-04 18:37:17");
print_r($matches);
:
Array ( [0] => 2008 [1] => 09 [2] => 04 [3] => 18 [4] => 37 [5] => 17 )


Добавлено через 31 минуту
всем спасибо)))
 
В первом варианте все совпадения надо взять в скобки, чтобы сохранить.
Код:
preg_match_all("/(\d*)-(\d*)-(\d*) (\d*):(\d*):(\d*)/", "2008-09-04 18:37:17", $matches); 
print_r($matches);
 
  • Нравится
Реакции: traa
Чтобы ее выстроить, надо имеющуюся дату (вида 2008-09-04 18:37:17) разбить на отдельные числа

При выборке из mysql используйте функцию date_format() - не нужны в данном случае регулярные выражения
 
надобно сравнить дату, лежащую где-т в БД с текущей, и в зависимости от того, насколько первая устарела выполнить определенные действия.
если отталкиватся от условий задачи то можно сформировать такой запрос к базе.
select datediff(now(), created) from users where id = '1';
он вернет количество дней пройденное с даты, которая хранится в столбце created, по текущий момент.
Далее в коде обрабатываешь это количество как хочешь.
 
Существует специальная функция Для просмотра ссылки Войди или Зарегистрируйся для перевода даты/времени из строкового представления в целочисленный UNIX-формат.
PHP:
$datetime = '2008-09-04 18:37:17';
$timestamp = strtotime($datetime);
Один её минус - не будет работать на Windows для дат ранее 1970 года. :(
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху