提供一个日期,获取这个日期的星期对应日历列表,键为星期标示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
$month_date = '2015-09-25' ;
$start_time = strtotime ( $month_date );
$start_week = date ( 'w' , $start_time );
$total_month_day = date ( 't' , $start_time );
$weeks_in_month = ceil (( $start_week + $total_month_day )/7);
$month_day_arr = [];
$start_month_day = 1;
for ( $i =0; $i < $weeks_in_month ; $i ++) {
for ( $j =0; $j <7; $j ++){
if ( $i ==0 && $j >= $start_week ) {
$month_day_arr [ $i ][ $j ] = $start_month_day ;
$start_month_day ++;
} elseif ( $i == 0) {
$month_day_arr [ $i ][ $j ] = '' ;
} else {
$month_day_arr [ $i ][ $j ] = $start_month_day ;
$start_month_day ++;
}
if ( $start_month_day > $total_month_day ){
break ;
}
}
}
echo "<pre>" ;
print_r( $month_day_arr );
Array
(
[0] => Array
(
[0] =>
[1] =>
[2] => 1
[3] => 2
[4] => 3
[5] => 4
[6] => 5
)
[1] => Array
(
[0] => 6
[1] => 7
[2] => 8
[3] => 9
[4] => 10
[5] => 11
[6] => 12
)
[2] => Array
(
[0] => 13
[1] => 14
[2] => 15
[3] => 16
[4] => 17
[5] => 18
[6] => 19
)
[3] => Array
(
[0] => 20
[1] => 21
[2] => 22
[3] => 23
[4] => 24
[5] => 25
[6] => 26
)
[4] => Array
(
[0] => 27
[1] => 28
[2] => 29
[3] => 30
)
)
|
获取指定日期所在月的开始日期与结束日期
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/**
* @param string $date
* @param boolean 为true返回开始日期,否则返回结束日期
* @return array
* @access private
*/
private function getMonthRange( $date , $returnFirstDay = true ) {
$timestamp = strtotime ( $date );
if ( $returnFirstDay ) {
$monthFirstDay = date ( 'Y-m-1 00:00:00' , $timestamp );
return $monthFirstDay ;
} else {
$mdays = date ( 't' , $timestamp );
$monthLastDay = date ( 'Y-m-' . $mdays . ' 23:59:59' , $timestamp );
return $monthLastDay ;
}
}
|
获取当前星期的日期范围,也就是从星期一到星期日的日期范围。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
function getWeekRange( $date ){
$ret = array ();
$timestamp = strtotime ( $date );
$w = strftime ( '%u' , $timestamp );
$ret [ 'sdate' ]= date ( 'Y-m-d 00:00:00' , $timestamp -( $w -1)*86400);
$ret [ 'edate' ]= date ( 'Y-m-d 23:59:59' , $timestamp +(7- $w )*86400);
return $ret ;
}
//author:zhxia 获取指定日期所在月的开始日期与结束日期
function getMonthRange( $date ){
$ret = array ();
$timestamp = strtotime ( $date );
$mdays = date ( 't' , $timestamp );
$ret [ 'sdate' ]= date ( 'Y-m-1 00:00:00' , $timestamp );
$ret [ 'edate' ]= date ( 'Y-m-' . $mdays . ' 23:59:59' , $timestamp );
return $ret ;
}
//author:zhxia 以上两个函数的应用
function getFilter( $n ){
$ret = array ();
switch ( $n ){
case 1: // 昨天
$ret [ 'sdate' ]= date ( 'Y-m-d 00:00:00' , strtotime ( '-1 day' ));
$ret [ 'edate' ]= date ( 'Y-m-d 23:59:59' , strtotime ( '-1 day' ));
break ;
case 2: //本星期
$ret =getWeekRange( date ( 'Y-m-d' ));
break ;
case 3: //上一个星期
$strDate = date ( 'Y-m-d' , strtotime ( '-1 week' ));
$ret =getWeekRange( $strDate );
break ;
case 4: //上上星期
$strDate = date ( 'Y-m-d' , strtotime ( '-2 week' ));
$ret =getWeekRange( $strDate );
break ;
case 5: //本月
$ret =getMonthRange( date ( 'Y-m-d' ));
break ;
case 6: //上月
$strDate = date ( 'Y-m-d' , strtotime ( '-1 month' ));
$ret =getMonthRange( $strDate );
break ;
}
return $ret ;
}
|