问题背景
当时想到的时候感觉是一件很简单的事情,内置函数肯定有吧!但是确实没有找到,那么就动手写一个吧!想想也不难 ~
思考
因为有个日期函数大家经常用,例如获取一周的数据,那么你就得获取一周前的今天的日期,这个函数就是 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 搞定咯 ~
那就先生成你要查的数据日期范围,然后循环日期范围进行具体数据查询吧!
我想应该也会有其他场景能用到吧 ~
🐶 你走,我不送你。你来,风雨无阻,我去接你。