PHP获取指定日期之间各月第一天和最后一天

主要用到了PHP强悍的strtotime和date函数。

1.获取指定日期所在月的第一天

function getMonthFirstDay($date) {
    return date('Y-m-01',strtotime($date));
}
复制代码

2.获取指定日期所在月的最后一天

function getMonthEndDay($date) {
    $firstDay = getMonthFirstDay($date);
    return date("Y-m-d",strtotime("$firstDay +1 month -1 day"));
}
复制代码

3.获取指定日期之间各月的第一天和最后一天

function splitMonths($startTime,$endTime) {
    if (strtotime($startTime) > strtotime($endTime)) {
        return false;
    }
    $res = array();
    $startDay = date('Y-m-d',strtotime($startTime));
    $firstEndDay = getMonthEndDay($startTime);
    $lastStartDay = getMonthFirstDay($endTime);
    $lastEndDay = date('Y-m-d',strtotime($endTime));
    //$res[] = array($startDay,$firstEndDay);
    while (strtotime($startDay) < strtotime($lastStartDay)) {
        $endDay = getMonthEndDay($startDay);
        $res[] = array($startDay,$endDay);
        $startDay = date('Y-m-01',strtotime("$startDay +1 month"));
        
        
    }
    $res[] = array($startDay,$lastEndDay);
    return $res;
}
复制代码

比如输入start_date=2017-02-15&end_date=2017-05-25
输出结果是

array(4) {
  [0]=>
  array(2) {
    [0]=>
    string(10) "2017-02-15"
    [1]=>
    string(10) "2017-02-28"
  }
  [1]=>
  array(2) {
    [0]=>
    string(10) "2017-03-01"
    [1]=>
    string(10) "2017-03-31"
  }
  [2]=>
  array(2) {
    [0]=>
    string(10) "2017-04-01"
    [1]=>
    string(10) "2017-04-30"
  }
  [3]=>
  array(2) {
    [0]=>
    string(10) "2017-05-01"
    [1]=>
    string(10) "2017-05-25"
  }
}
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享