мне нужно получить количество дней в течение каждого дня недели между двумя датами, как:получить число каждого дня недели между двумя датами
2013-01-01 to 2013-01-15
Mo:2
Tu:3
We:2
Th:2
Fr:2
Sa:2
Su:2
Я имел этот код не уверен, где я получил его раньше но, похоже, он работал, но понял, что некоторые диапазоны дат не работают, например, с 2013-03-01 по 2013-03-11 он сообщает в понедельник как 1 день вместо 2 дней.
function daysOfWeekBetween($start_date, $end_date, $weekDay)
{
$first_date = strtotime($start_date." -1 days");
$first_date = strtotime(date("M d Y",$first_date)." next ".$weekDay);
$last_date = strtotime($end_date." +1 days");
$last_date = strtotime(date("M d Y",$last_date)." last ".$weekDay);
return floor(($last_date - $first_date)/(7*86400)) + 1;
}
daysOfWeekBetween($date_range['start_date'], $date_range['end_date'], 'Monday');
Это только говорит мне, что одна дата. Нет ли математического способа понять это, не зацикливая каждую дату между двумя днями и выясняя изо дня в день, в какой день дата? – Danny
Это не сработало: using 2013-03-01 - 2013-03-11 Я получаю это: 'Array ([0] => 2 [1] => 1 [2] => 1 [3] => 1 [ 4] => 1 [5] => 2 [6] => 2) 'Когда я должен получить' Array ([0] => 2 [1] => 2 [2] => 1 [3] => 1 [4] => 1 [5] => 2 [6] => 2) 'Это именно то, что мой оригинальный скрипт сделал с этим диапазоном дат (понедельник выключено). – Danny
Здесь период 2013-03-01 - 2013-03-11 работал отлично. Попробуйте установить это в свой скрипт: 'date_default_timezone_set ('UTC');' – Havenard