有没有办法在一个月的
PHP中获取每周的日期开始/结束?
所以,例如,如果我这个月(2011年11月),我需要返回
30 Oct -> 5 Nov
6 Nov -> 12 Nov
13 Nov -> 19 Nov
20 Nov -> 26 Nov
27 Nov -> 3 Dec
LE:
这是我所做的,以防其他人需要它.代码不漂亮但它可以正常工作.
public function getMonthWeeks($month,$year)
{
$month = intval($month);
if ($month < 1) {
$month = 1;
}
if ($month > 12) {
$month = 12;
}
$tsfdOfMonth = mktime(0,$month,1,$year);
$dayOfWeek = idate('w',$tsfdOfMonth);
$tIntervalStart = $tsfdOfMonth;
$tNextMonth = idate('m',strtotime("+1 month",$tsfdOfMonth));
if ($dayOfWeek > 0) {
$tStr = sprintf("-%d %s",$dayOfWeek,$dayOfWeek == 1 ? 'day' : 'days'
);
$tIntervalStart = strtotime($tStr,$tsfdOfMonth);
}
$resultDates = array();
$tsStart = $tIntervalStart;
$tsEnd = strtotime('+6 days',$tsStart);
while (true) {
$rObj = new stdClass;
$rObj->LinkStr = sprintf("%s %s - %s %s",date('M',$tsStart),date('d',$tsEnd),$tsEnd)
);
$rObj->DateStart = date('Y-m-d',$tsStart);
$rObj->DateEnd = date('Y-m-d',$tsEnd);
$resultDates[] = $rObj;
if (idate('m',strtotime('+1 day',$tsEnd)) == $tNextMonth) {
break;
}
$tsStart = strtotime('+1 day',$tsEnd);
$tsEnd = strtotime('+6 days',$tsStart);
}
return $resultDates;
}