微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP中查询指定时间范围内的所有日期,月份,季度,年份

/**

 * 查询指定时间范围内的所有日期,月份,季度,年份

 *

 * @param $startDate   指定开始时间,Y-m-d格式

 * @param $endDate     指定结束时间,Y-m-d格式

 * @param $type        类型,day 天,month 月份,quarter 季度,year 年份

 * @return array

 */

function getDateByInterval($startDate,$endDate,$type)

{

    if (date('Y-m-d',strtotime($startDate)) != $startDate || date('Y-m-d',strtotime($endDate)) != $endDate) {

        return '日期格式不正确';

    }

 

    $tempDate = $startDate;

    $returnData = [];

    $i = 0;

    if ($type == 'day') {    // 查询所有日期

        while (strtotime($tempDate) < strtotime($endDate)) {

            $tempDate = date('Y-m-d',strtotime('+' . $i . ' day',strtotime($startDate)));

            $returnData[] = $tempDate;

            $i++;

        }

    } elseif ($type == 'month') {    // 查询所有月份以及开始结束时间

        while (strtotime($tempDate) < strtotime($endDate)) {

            $temp = [];

            $month = strtotime('+' . $i . ' month',strtotime($startDate));

            $temp['name'] = date('Y-m',$month);

            $temp['startDate'] = date('Y-m-01',$month);

            $temp['endDate'] = date('Y-m-t',$month);

            $tempDate = $temp['endDate'];

            $returnData[] = $temp;

            $i++;

        }

    } elseif ($type == 'quarter') {    // 查询所有季度以及开始结束时间

        while (strtotime($tempDate) < strtotime($endDate)) {

            $temp = [];

            $quarter = strtotime('+' . $i . ' month',strtotime($startDate));

            $q = ceil(date('n',$quarter) / 3);

            $temp['name'] = date('Y',$quarter) . '第' . $q . '季度';

            $temp['startDate'] = date('Y-m-01',mktime(0,$q * 3 - 3 + 1,1,date('Y',$quarter)));

            $temp['endDate'] = date('Y-m-t',mktime(23,59,$q * 3,$quarter)));

            $tempDate = $temp['endDate'];

            $returnData[] = $temp;

            $i = $i + 3;

        }

    } elseif ($type == 'year') {    // 查询所有年份以及开始结束时间

        while (strtotime($tempDate) < strtotime($endDate)) {

            $temp = [];

            $year = strtotime('+' . $i . ' year',strtotime($startDate));

            $temp['name'] = date('Y',$year) . '年';

            $temp['startDate'] = date('Y-01-01',$year);

            $temp['endDate'] = date('Y-12-31',$year);

            $tempDate = $temp['endDate'];

            $returnData[] = $temp;

            $i++;

        }

    }

    return $returnData;

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐