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

Тема в разделе "Регулярные выражения", создана пользователем Albert22, 4 сен 2008.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    привет
    надобно сравнить дату, лежащую где-т в БД с текущей, и в зависимости от того, насколько первая устарела выполнить определенные действия. самый оптимал, что я придумал - это работать с ними не в 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);
    и вот что получал:
    а вот что хотелось бы:
    пожалуйста, помогите с этим разобраться!

    Добавлено через 31 минуту
    вот что помогло гы гы
    PHP:
    $matches=preg_split("/\D/""2008-09-04 18:37:17");
    print_r($matches);
    :


    Добавлено через 31 минуту
    всем спасибо)))
     
  2. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    В первом варианте все совпадения надо взять в скобки, чтобы сохранить.
    Код:
    preg_match_all("/(\d*)-(\d*)-(\d*) (\d*):(\d*):(\d*)/", "2008-09-04 18:37:17", $matches); 
    print_r($matches); 
    
     
    traa нравится это.
  3. mdee

    mdee Писатель

    Регистр.:
    6 фев 2008
    Сообщения:
    5
    Симпатии:
    0
    При выборке из mysql используйте функцию date_format() - не нужны в данном случае регулярные выражения
     
  4. izhukov

    izhukov Писатель

    Регистр.:
    22 сен 2008
    Сообщения:
    5
    Симпатии:
    2
    если отталкиватся от условий задачи то можно сформировать такой запрос к базе.
    select datediff(now(), created) from users where id = '1';
    он вернет количество дней пройденное с даты, которая хранится в столбце created, по текущий момент.
    Далее в коде обрабатываешь это количество как хочешь.
     
  5. Avtandil

    Avtandil Создатель

    Регистр.:
    30 сен 2006
    Сообщения:
    30
    Симпатии:
    24
    Существует специальная функция Перейти по ссылке для перевода даты/времени из строкового представления в целочисленный UNIX-формат.
    PHP:
    $datetime '2008-09-04 18:37:17';
    $timestamp strtotime($datetime);
    Один её минус - не будет работать на Windows для дат ранее 1970 года. :(
     
  6. MyGoogle

    MyGoogle Прохожие

    Пропробуй мануал почитать
     
Статус темы:
Закрыта.