Работа с датой и временем

Тема в разделе "PHP", создана пользователем vesta-v, 10 сен 2011.

Модераторы: latteo
  1. vesta-v

    vesta-v

    Регистр.:
    25 окт 2007
    Сообщения:
    311
    Симпатии:
    14
    Добрый день, подскажите, как можно организовать следущее:

    Есть сайт, на котором добавляются новости и выводится дата её добавления. Как сделать добавление к начальной дате + 7 дней, чтобы выводилась дата окончания её размещения на странице. Или, так, чтобы рядом с этой датой высвечивался какбы счетчик обратного отчета (от 7 дней) и каждый день отнимался на 1 число и так до 0.

    Например:

    Дата добавления статьи 10.09.2011, 17.09.2011 статья уйдет в архив.

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

    Или так...:

    Дата добавления статьи 10.09.2011, через 7 дней статья уйдет в архив.

    На следующий день:

    Дата добавления статьи 10.09.2011, через 6 дней статья уйдет в архив.

    Что проще сделать? Первый авриант конечно предпочтительней.

    Вобще буду благодарна за любую помощь.

    Добавлено через 17 минут
    Возможно как-то так:

    $datadob=date("Y-m-d H:i")

    А дата ухода в архив:

    $datarh=date("Y-") . date("m") . date("-(d+14) H:i");

    Если так, то как это можно впихнуть в DLE?
     
  2. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    в каком виде дата добавления статьи хранится в базе?
     
  3. vesta-v

    vesta-v

    Регистр.:
    25 окт 2007
    Сообщения:
    311
    Симпатии:
    14
    без понятия. Мне нужно просто к текущей дате прибавлять 7 дней. Это ж можно сделать без базы?
     
  4. horpah

    horpah

    Регистр.:
    21 июн 2010
    Сообщения:
    200
    Симпатии:
    55
    Допустим в БД у новости есть дата создания в поле `created` типа DATETIME.
    Тогда 1 из многих вариантов:
    PHP:
    $db->query('SELECT * FROM tablename WHERE .....'); //вытаскиваем новость обычным запросом
    $article=$db->fetch(); 
    $publictill=strtotime(article['created'])+3600*24*7//добавлем 7 дней
    $publictill_date=date('Формат даты исполюзуемый на сайте',publictill); // вот и + 7дней
    считаем оставшееся время
    $diff abs($publictill time()); 
    $days floor($diff / (60*60*24));  //осталось дней
    $rest $diff $days * (60*60*24); 
    $hours floor($rest 60*60);       //осталось часов
    $rest $rest $hours * (60*60); 
    $minutes floor($rest 60);     //осталось минут
    $seconds $rest $mins 60;   // ну и секунд конечно
    конструируем нужную строку с сообщением об оставшемся времени 
     
    vesta-v нравится это.
  5. SiZE

    SiZE Постоялец

    Регистр.:
    31 янв 2010
    Сообщения:
    51
    Симпатии:
    10
    PHP:
    echo date'd.m.Y'strtotimedate('d.m.Y').'+7days' ) );
    С математикой дальше разберешься?
     
  6. DenisK

    DenisK

    Регистр.:
    8 фев 2007
    Сообщения:
    205
    Симпатии:
    13
    Вам нужно перевести дату статьи в формат unixstamp
    и добавить к ней 7 * 24 * 60 *60
     
  7. SideWinder

    SideWinder Постоялец

    Регистр.:
    6 апр 2009
    Сообщения:
    55
    Симпатии:
    3
    $created_at= // Это ининциализируем датой из базы
    $week=7 * 24 * 60 *60;
    if(strtotime(date("Y-m-d H:i:s"))-strtotime($created_at)<$week){
    //Кажем количество оставшихся дней
    }else{
    //Переносим в архив
    }