从01-01-2009到02-23-2009
如何找出这几天之间的星期天?
答案 0 :(得分:5)
这样的事情:
$date = strtotime('2009-01-01 next sunday');
$dateMax = strtotime('2009-02-23');
$nbr = 0;
while ($date < $dateMax) {
var_dump(date('Y-m-d', $date));
$nbr++;
$date += 7 * 24 * 3600;
}
var_dump($nbr);
你获得的输出是:
string '2009-01-04' (length=10)
string '2009-01-11' (length=10)
string '2009-01-18' (length=10)
string '2009-01-25' (length=10)
string '2009-02-01' (length=10)
string '2009-02-08' (length=10)
string '2009-02-15' (length=10)
string '2009-02-22' (length=10)
每个星期日的日期,并且:
int 8
关于星期日的数量
(我已经快速检查了,似乎那些日期确实是星期日)
这段代码的作用是:
注意:我已更改日期格式,使用YYYY-MM-DD,而不是DD-MM-YYY;它是通常使用的格式 - 所以,使用这个格式可能是一个好主意,以确保strtotime正常工作。 (不确定它的格式是否正常)
答案 1 :(得分:2)
这应该没有任何循环。
$start = mktime(0, 0, 0, $start_month, $start_day, $start_year);
$end = mktime(0, 0, 0, $end_month, $end_day, $end_year);
$days = ($end - $start) / 86400;
$sundays = $days / 7
// check if there are enough leftover days for one more sunday
if((localtime($start)[6]+($days % 7) > 6)
$sundays++;
答案 2 :(得分:1)
$sunday=0;
for($i=1; $i<=date("t", strtotime("2012-09-01")); $i++) {
if(date("l", strtotime("2012-09-".$i)) === 'Sunday') {
$sunday++;
}
}
echo "no of Sunday=".$sunday;
答案 3 :(得分:0)
你可以计算这两个日期之间的周数,PHP中应该有一些日期操作库,然后星期日的数量将是周数,你仍然需要查看第一个日期是否为星期日与否,最后日期是星期日或不是处理日期范围的边缘。
可以看到一些例子here。
答案 4 :(得分:0)
在SO的某个地方看到这个,我在我的项目中使用它。无法追溯原始帖子。
// function to calculate number of given day within date range
function number_of_days($day, $start, $end){
$w = array(date('w', $start), date('w', $end));
return floor( ( date('z', $end) - date('z', $start) ) / 7) + ($day == $w[0] || $day == $w[1] || $day < ((7 + $w[1] - $w[0]) % 7));
}
// define your dates
$start = mktime(0, 0, 0, 1, 16, 2010);
$end = mktime(0, 0, 0, 1, 25, 2010);
// display the count
echo number_of_days(0, $start, $end);