Вычислить разницу дат и выполнить условие

Тема в разделе "PHP", создана пользователем irkmos, 12 фев 2010.

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

    irkmos Создатель

    Регистр.:
    7 май 2007
    Сообщения:
    48
    Симпатии:
    4
    Ситуация такая:пользователь добавляет анкету на сайт,нужно чтобы в течении 10 дней она была помечена - как новая.

    В базе данные хранятся в таком виде:
    сегодняшняя дата: 2010-02-09
    дата регистрации: 2009-12-19

    Т.е. нужно вычислить разницу между этими датами и если она составляет не более 10 дней,выполняем условие(например :выводим значок "new").

    Заранее благодарен.
     
  2. sultan347

    sultan347

    Регистр.:
    25 апр 2009
    Сообщения:
    230
    Симпатии:
    7
    $q = mysql_query("SELECT UNIX_TIMESTAMP(datetime) AS datareg FROM `base` WHERE id=''");
    $r = mysql_fetch_array($q)
    if ((3600*24*10)>=(time()-$r['datetime']))
    {echo "new";}
     
    irkmos нравится это.
  3. Abliganto

    Abliganto Постоялец

    Регистр.:
    30 ноя 2009
    Сообщения:
    111
    Симпатии:
    46
    И можно добавить, если дата извлекается из БД в виде 2010-02-09, её можно преобразовать в unix timestamp (число) при помощи PHP ф-ции strtotime(). Хотя первый вариант имеет более высокую производительность, правда это экономия на спичках :)

    PHP:
    mysql_query("SELECT datetime AS datareg FROM `base` WHERE id=''");
    $r mysql_fetch_array($q)
    if ((
    3600*24*10)>=(time()-strtotime($r['datetime'])))
    {echo 
    "new";}
     
  4. irkmos

    irkmos Создатель

    Регистр.:
    7 май 2007
    Сообщения:
    48
    Симпатии:
    4
    Прошу прощения за мою невнимательность и что ввел в заблуждение, неправильно указал исходные данные:
    В базе данные хранятся в таком виде:
    дата регистрации: 2009-12-19 11:56:09
    Задача:
    Т.е. нужно нужно определить сегодняшнюю дату и вычислить разницу между этими датами и если она составляет не более 10 дней,выполняем условие(например :выводим значок "new").
     
  5. sultan347

    sultan347

    Регистр.:
    25 апр 2009
    Сообщения:
    230
    Симпатии:
    7
    условие вашей задачи не поменялся, time() возвращает текущей момент.
     
  6. irkmos

    irkmos Создатель

    Регистр.:
    7 май 2007
    Сообщения:
    48
    Симпатии:
    4
    Вообщем по примеру выше у меня ничего не получилось,сделал так :
    $current_date = mktime (0,0,0,date("m") ,date("d"),date("Y")); //текущая дата
    $old_date = strtotime ($datareg); //дата регистрации
    $difference = ($current_date - $old_date); //разница в секундах
    $difference_in_days = ($difference / 86400); //разница в днях
    if ($difference_in_days<=10)
    {
    echo "";
    }
    В результате еще дополнительно получил : $difference_in_days //сколько дней анкета находится на сайте.

    Спасибо всем за помощь.
     
Статус темы:
Закрыта.