[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод дней недели в промежутке между двумя датами
IPnex
Всем привет!
Такая проблема, допустим есть две даты 10.02.2011 и 18.04.2011.
Необходимо в цикле вывести дни недели в формате 'dd.mm' находящихся в промежутке между этими двумя датами.

Пробовал делать так:

// Вычиляемм timestamp первой даты
$start_date = '10.02.2011';
$month1 = substr($start_date,3,2);
$days1 = substr($start_date,0,2);
$year1 = substr($start_date,6,4);
$date1 = mktime(0, 0, 0, $month1, $days1, $year1);

// Вычиляемм timestamp второй даты
$finish_date = '18.04.2011';
$month2 = substr($finish_date,3,2);
$days2 = substr($finish_date,0,2);
$year2 = substr($finish_date,6,4);
$date2 = mktime(0, 0, 0, $month2, $days2, $year2);

// Количество дней между датами
$allDays = floor(($date2 - $date1)/86400);

// Номер недели начальной даты
$w = date("W",$date1);

$daysWeek = array();
for($i=1; $i<=$allDays; $i++) {
$daysWeek[] = date('d.m', strtotime($year2.'W'.$w.$i));
}


Знаю что бред. Выводит начиная с 7 февраля и до конца недели.
Подскажите пожалуйста, что нужно здесь изменить/добавить



Спустя 16 минут, 40 секунд (18.04.2011 - 13:27) Dr.Mars написал(а):

Спустя 40 минут, 17 секунд (18.04.2011 - 14:07) IPnex написал(а):
Dr.Mars
Не получится использовать, т.к. версия php на хостиге 5.2

Спустя 9 минут, 13 секунд (18.04.2011 - 14:17) Семён написал(а):
strtotime() переводишь время
считаешь разность верхней и нижней даты
выводишь циклом с шагом 24*3600 промежуточные даты.
Важно: при датах старше 1970 пахать не будет )

Спустя 49 секунд (18.04.2011 - 14:18) IPnex написал(а):
Кому надо вот нашел, отлично работает http://inroot.ru/2009-05/get_difference_be...n_two_date.html
Но это только кол-во дней, вот только как вывести дни недели за этот промежуток?

Спустя 1 минута, 47 секунд (18.04.2011 - 14:19) Семён написал(а):
Цитата (IPnex @ 18.04.2011 - 15:18)
Кому надо вот нашел, отлично работает http://inroot.ru/2009-05/get_difference_be...n_two_date.html

Руки в жопу нада засунуть тому кто написал выше приведённый код по ссылке

Спустя 14 минут, 52 секунды (18.04.2011 - 14:34) IPnex написал(а):
Цитата (Семён @ 18.04.2011 - 14:17)
strtotime() переводишь время
считаешь разность верхней и нижней даты
выводишь циклом с шагом 24*3600 промежуточные даты.
Важно: при датах старше 1970 пахать не будет )

А можно это в виде кода посмотреть, если не сложно, т.к. не очень понятно

Если распечатать массив $daysWeek, который формируется здесь

$daysWeek = array();
for($i=1; $i<=$allDays; $i++) {
$daysWeek[] = date('d.m', strtotime($year2.'W'.$w.$i));
}

выводятся даты, начиная с понедельника, в моем случае случае с 07.02 и до конца недели.

Спустя 3 минуты, 59 секунд (18.04.2011 - 14:38) Семён написал(а):
Вот .....
$date[0] = strtotime('16.02.2011');
$date[1] = strtotime('18.04.2011');
$date['days'] = floor(($date[1] - $date[0]) / (3600 * 24));
for($i=1;$i<$date['days'];$i++)
echo date("d:m:y",$date[0]+((3600*24)*$i)) . "<br>";

Спустя 2 минуты, 23 секунды (18.04.2011 - 14:41) Семён написал(а):
Формат вывода промежуточных дат:
d:m:Y
для вида 10.03.2011

Спустя 5 минут, 40 секунд (18.04.2011 - 14:46) IPnex написал(а):
Вот да, что-то похоже, спасибо большое Семён!

Спустя 45 секунд (18.04.2011 - 14:47) Семён написал(а):
Будешь должен, однажды я приду и заберу 1 самую дорогую тебе вещь.
Быстрый ответ:

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