遗忘悠剑

🍀 记录精彩的程序人生 开始使用

php 如何生成两个日期区间的日期数组呢?就像 range(1,6) 函数那样!

问题背景

当时想到的时候感觉是一件很简单的事情,内置函数肯定有吧!但是确实没有找到,那么就动手写一个吧!想想也不难 ~

思考

因为有个日期函数大家经常用,例如获取一周的数据,那么你就得获取一周前的今天的日期,这个函数就是 strtotime('-7 days')

实现

看到这里就好办了吧,利用 while,然后日期一直 +1,直到加不动为止 😄😄😄
看下面代码 ~

<?php
/**
 * 日期范围得到一个天为单位的数组
 * @param string $start_date Y-m-d:2020-06-01
 * @param string $end_date Y-m-d:2020-06-07
 * @return array
 */
function dateRange($start_date, $end_date)
{
    if($start_date > $end_date){
        $start = strtotime($end_date);
        $end = strtotime($start_date);
        $is_reverse = true;
    }else{
        $start = strtotime($start_date);
        $end = strtotime($end_date);
        $is_reverse = false;
    }
    $i = 0;$range = [];
    while ($start <= $end) {
        $range[$i] = date('Y-m-d', $start);
        $start = strtotime('+1 day', $start);
        $i++;
    }
    return $is_reverse ? array_reverse($range) : $range;
}

拿走,不谢 ~

使用场景

说说我吧,因为要查询一个相对复杂的数据,也就是每天的数据查询也费劲,还要查一个范围的数据,所以没办法一条 SQL 搞定咯 ~
那就先生成你要查的数据日期范围,然后循环日期范围进行具体数据查询吧!
我想应该也会有其他场景能用到吧 ~


🐶 你走,我不送你。你来,风雨无阻,我去接你。

评论
留下你的脚步