Такая проблема, допустим есть две даты 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
Не получится использовать, т.к. версия php на хостиге 5.2
Спустя 9 минут, 13 секунд (18.04.2011 - 14:17) Семён написал(а):
strtotime() переводишь время
считаешь разность верхней и нижней даты
выводишь циклом с шагом 24*3600 промежуточные даты.
Важно: при датах старше 1970 пахать не будет )
считаешь разность верхней и нижней даты
выводишь циклом с шагом 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 самую дорогую тебе вещь.