分享3个php获取日历的函数
提供一个日期,获取这个日期的星期对应日历列表,键为星期标示
$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 ) )
获取指定日期所在月的开始日期与结束日期
/** *@paramstring$date *@paramboolean为true返回开始日期,否则返回结束日期 *@returnarray *@accessprivate */ privatefunctiongetMonthRange($date,$returnFirstDay=true){ $timestamp=strtotime($date); if($returnFirstDay){ $monthFirstDay=date('Y-m-100:00:00',$timestamp); return$monthFirstDay; }else{ $mdays=date('t',$timestamp); $monthLastDay=date('Y-m-'.$mdays.'23:59:59',$timestamp); return$monthLastDay; } }
获取当前星期的日期范围,也就是从星期一到星期日的日期范围。
functiongetWeekRange($date){ $ret=array(); $timestamp=strtotime($date); $w=strftime('%u',$timestamp); $ret['sdate']=date('Y-m-d00:00:00',$timestamp-($w-1)*86400); $ret['edate']=date('Y-m-d23:59:59',$timestamp+(7-$w)*86400); return$ret; } //author:zhxia获取指定日期所在月的开始日期与结束日期 functiongetMonthRange($date){ $ret=array(); $timestamp=strtotime($date); $mdays=date('t',$timestamp); $ret['sdate']=date('Y-m-100:00:00',$timestamp); $ret['edate']=date('Y-m-'.$mdays.'23:59:59',$timestamp); return$ret; } //author:zhxia以上两个函数的应用 functiongetFilter($n){ $ret=array(); switch($n){ case1://昨天 $ret['sdate']=date('Y-m-d00:00:00',strtotime('-1day')); $ret['edate']=date('Y-m-d23:59:59',strtotime('-1day')); break; case2://本星期 $ret=getWeekRange(date('Y-m-d')); break; case3://上一个星期 $strDate=date('Y-m-d',strtotime('-1week')); $ret=getWeekRange($strDate); break; case4://上上星期 $strDate=date('Y-m-d',strtotime('-2week')); $ret=getWeekRange($strDate); break; case5://本月 $ret=getMonthRange(date('Y-m-d')); break; case6://上月 $strDate=date('Y-m-d',strtotime('-1month')); $ret=getMonthRange($strDate); break; } return$ret; }