Работа с датой

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

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

    Sammy

    Регистр.:
    30 янв 2007
    Сообщения:
    222
    Симпатии:
    19
    Стоит такая задача:
    я задаю начальную дату. в цикле while на каждом шаге дата "увеличивается" на 1 день.
    т.е.
    2010-01-01
    2010-01-02
    .......
    2010-02-01... и так далее.
    Может кто нибудь помочь это реализовать?что бы дата нормально пробегала все дни и переходила на следующие месяцы. формат даты не важен.
     
  2. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    приведите к виду timestamp
    time
     
    Sammy нравится это.
  3. z00f

    z00f Создатель

    Регистр.:
    17 апр 2009
    Сообщения:
    32
    Симпатии:
    3
    переводите дату в секунды (UNIX Time) = $tim_e и прибавляйте кол-во секунд за сутки
    60 * 60 * 24 = 86400сек
    $tim_e = $tim_e * 60 * 60 * 24;
    далее полученное число обратно преобразовываете в нужный формат с помощью date("Y-m-d", $tim_e);
    типа того...
     
  4. uNknownMark

    uNknownMark

    Регистр.:
    22 сен 2007
    Сообщения:
    393
    Симпатии:
    169
    PHP:
    <?php
    for ($i=1$i<31; ++$i) {
    $mk mktime(000date("m"), date("d")+$idate("Y"));
    echo 
    date ('d-m-Y',$mk)."\r\n";
    }
    ?>
     
  5. pk2002

    pk2002

    Регистр.:
    14 ноя 2006
    Сообщения:
    382
    Симпатии:
    350
    Ошибочка закралась
    $tim_e = $tim_e + 60 * 60 * 24;

    Но лучше прибавлять в цикле 86400, какой смысл проц загружать лишними вычислениями.
     
  6. forrester

    forrester Писатель

    Регистр.:
    3 июл 2008
    Сообщения:
    6
    Симпатии:
    0
    Можно сделать еще так:
    PHP:
    <?php
    $startTime 
    00000// начальное время
    for ($i=1$i<31; ++$i) {
    $mk strtotime("+$i day"$startTime);
    echo 
    date ('d-m-Y',$mk)."\r\n";
    }
    ?> 
     
  7. gadfly

    gadfly Создатель

    Регистр.:
    30 авг 2007
    Сообщения:
    13
    Симпатии:
    0
    Я в таких случаях собираю все необходимые даты в массив, после с ними уже делаю, что хочу.
    Пример сода:
    PHP:
    $f_date '2010-02-06'// начальная дата
    $t_date '2010-03-10'// конечная дата
    $dates = array ($dd $f_date);
    while (
    $dd $t_date)
    {
        
    $dates[] = $dd date ("Y-m-d"strtotime ("+1 day"strtotime ($dd)));  // +1 day можно менять и на -1 и на + 7 :)
    }
    // после обрабатываем в цикле
    foreach ($dates as $date)
    {
        echo 
    '['.$date."]\n";
    }
     
  8. Sammy

    Sammy

    Регистр.:
    30 янв 2007
    Сообщения:
    222
    Симпатии:
    19
    Спасибо за советы.
    Решил делать через timestamp. так можно задавать любые интервалы времени как через 1 день, так и через несколько часов.
     
Статус темы:
Закрыта.