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

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

Sammy

Местный житель
Регистрация
29 Янв 2007
Сообщения
222
Реакции
20
Стоит такая задача:
я задаю начальную дату. в цикле while на каждом шаге дата "увеличивается" на 1 день.
т.е.
2010-01-01
2010-01-02
.......
2010-02-01... и так далее.
Может кто нибудь помочь это реализовать?что бы дата нормально пробегала все дни и переходила на следующие месяцы. формат даты не важен.
 
переводите дату в секунды (UNIX Time) = $tim_e и прибавляйте кол-во секунд за сутки
60 * 60 * 24 = 86400сек
$tim_e = $tim_e * 60 * 60 * 24;
далее полученное число обратно преобразовываете в нужный формат с помощью date("Y-m-d", $tim_e);
типа того...
 
переводите дату в секунды (UNIX Time) = $tim_e и прибавляйте кол-во секунд за сутки
60 * 60 * 24 = 86400сек
$tim_e = $tim_e * 60 * 60 * 24;
далее полученное число обратно преобразовываете в нужный формат с помощью date("Y-m-d", $tim_e);
типа того...

Ошибочка закралась
$tim_e = $tim_e + 60 * 60 * 24;

Но лучше прибавлять в цикле 86400, какой смысл проц загружать лишними вычислениями.
 
Можно сделать еще так:
PHP:
<?php
$startTime = 00000; // начальное время
for ($i=1; $i<31; ++$i) {
$mk = strtotime("+$i day", $startTime);
echo date ('d-m-Y',$mk)."\r\n";
}
?>
 
Я в таких случаях собираю все необходимые даты в массив, после с ними уже делаю, что хочу.
Пример сода:
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";
}
 
Спасибо за советы.
Решил делать через timestamp. так можно задавать любые интервалы времени как через 1 день, так и через несколько часов.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху