分享3个php获取日历的函数
author:一佰互联 2019-04-27   click:174

提供一个日期,获取这个日期的星期对应日历列表,键为星期标示

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