[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Цикл по датам с шагом 1 месяц
Skesh
Доброго всем времени суток, уже 4-ый день колдую над дилеммой, как совершить цикл по датам с шагом 1 месяц:
$time1 = mktime(0,0,0,$data[m1],$data[d1],$data[y1]);	// $data[m1],$data[d1],$data[y1],$data[m2],$data[d2],$data[y2] - прилетают с формы
$time2 = mktime(0,0,0,$data[m2],$data[d2],$data[y2]); // могут быть какими угодно, для примера взял 01.01.2013 и 31.12.2013
$krok=31; // максимальное количество дней в месяце
for ($d = $time1; $d <= $time2; $d+=24*60*60*$krok) {
echo date("Y-m-d", $d)." // ";
}


Результатом выполнения такого скрипта будет:
2013-01-01 // 2013-02-01 // 2013-03-04 // 2013-04-04 // 2013-05-05 // 2013-06-05 // 2013-07-06 // 2013-08-06 // 2013-09-06 // 2013-10-07 // 2013-11-07 // 2013-12-08

Как сделать чтобы было?:
2013-01-01 // 2013-02-01 // 2013-03-01 // 2013-04-01 // 2013-05-01 // 2013-06-01 // 2013-07-01 // 2013-08-01 // 2013-09-01 // 2013-10-01 // 2013-11-01 // 2013-12-01

То есть с какого дня начали считать такой и выводить каждый шаг, нужно как то корректировать шаг во время цикла, пробую так:

$time1 = mktime(0,0,0,$data[m1],$data[d1],$data[y1]);	// $data[m1],$data[d1],$data[y1],$data[m2],$data[d2],$data[y2] - прилетают с формы
$time2 = mktime(0,0,0,$data[m2],$data[d2],$data[y2]); // могут быть какими угодно, для примеря взял 01.01.2013 и 31.12.2013
$krok=31; // максимальное количество дней в месяце
for ($d = $time1; $d <= $time2; $d+=24*60*60*$krok) {
echo date("Y-m-d", $d)." ";
if (date("d", $d+(24*60*60*$krok))>date("d", $d)) {
$krok=$krok-(date("d", $d+(24*60*60*$krok))-date("d", $d));
} elseif (date("d", $d+(24*60*60*$krok))<date("d", $d)) {
$krok=$krok+(date("d", $d)-date("d", $d+(24*60*60*$krok)));
} else {
$krok=31;
}
}


получается не очень ибо все равно проскакивает, ну как бы даже не проскакивает а вылазит лишний день или несколько, либо пропадает, подскажите плиз если кто то уже сталкивался?

_____________
*пускает слюну, глядя на код* :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.