Welcome 微信登录

首页 / 网页编程 / PHP / 分享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) )
     获取指定日期所在月的开始日期与结束日期

/** * @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;}}
获取当前星期的日期范围,也就是从星期一到星期日的日期范围。

  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;  }