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

本文介绍如何使用PHP的strtotime和date函数来获取指定日期所在月份的第一天和最后一天,以及两个日期之间各个月份的首尾日。以start_date=2017-02-15和end_date=2017-05-25为例,展示了具体的实现方法。

主要用到了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"
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值