最简单的,输出一个月的所有日期和星期几
//月初月末怎么获得就不写了,表示个意思
$begin = new DateTime('2015-12-01');
$end = new DateTime('2015-12-31');
$end = $end->modify('+1 day');
$interval = new DateInterval('P1D');
$range = new DatePeriod($begin, $interval, $end);
foreach($range as $date){
$cal[] = $date->format("Ymd 周w");
}
print_r($cal);
输出
Array
(
[0] => 20151201 周2
[1] => 20151202 周3
[2] => 20151203 周4
[3] => 20151204 周5
[4] => 20151205 周6
[5] => 20151206 周0
[6] => 20151207 周1
[7] => 20151208 周2
[8] => 20151209 周3
[9] => 20151210 周4
[10] => 20151211 周5
[11] => 20151212 周6
[12] => 20151213 周0
[13] => 20151214 周1
[14] => 20151215 周2
[15] => 20151216 周3
[16] => 20151217 周4
[17] => 20151218 周5
[18] => 20151219 周6
[19] => 20151220 周0
[20] => 20151221 周1
[21] => 20151222 周2
[22] => 20151223 周3
[23] => 20151224 周4
[24] => 20151225 周5
[25] => 20151226 周6
[26] => 20151227 周0
[27] => 20151228 周1
[28] => 20151229 周2
[29] => 20151230 周3
[30] => 20151231 周4
)
补全前后几天
$begin = new DateTime('2015-12-01');
$sub = $begin->format("N") - 1;
$sub && $begin->sub(new DateInterval('P' . $sub . 'D'));
$end = new DateTime('2015-12-31');
$add = 7 - $end->format("N");
$add && $end->add(new DateInterval('P' . $add . 'D'));
$end = $end->modify('+1 day');
$interval = new DateInterval('P1D');
$range = new DatePeriod($begin, $interval, $end);
foreach($range as $date){
$cal[] = $date->format("Ymd 周N");
}
print_r($cal);
输出
Array
(
[0] => 20151130 周1
[1] => 20151201 周2
[2] => 20151202 周3
[3] => 20151203 周4
[4] => 20151204 周5
[5] => 20151205 周6
[6] => 20151206 周7
[7] => 20151207 周1
[8] => 20151208 周2
[9] => 20151209 周3
[10] => 20151210 周4
[11] => 20151211 周5
[12] => 20151212 周6
[13] => 20151213 周7
[14] => 20151214 周1
[15] => 20151215 周2
[16] => 20151216 周3
[17] => 20151217 周4
[18] => 20151218 周5
[19] => 20151219 周6
[20] => 20151220 周7
[21] => 20151221 周1
[22] => 20151222 周2
[23] => 20151223 周3
[24] => 20151224 周4
[25] => 20151225 周5
[26] => 20151226 周6
[27] => 20151227 周7
[28] => 20151228 周1
[29] => 20151229 周2
[30] => 20151230 周3
[31] => 20151231 周4
[32] => 20160101 周5
[33] => 20160102 周6
[34] => 20160103 周7
)
具体怎么输出表格就不写了,都会