/**
* 根据指定日期获取之间的日期
* @param $start_date int 开始时间戳
* @param $end_date int 结束时间戳
*
* @return array
*/
function getDateFromRange($start_date, $end_date)
{
$start_date = $start_date ? $start_date : time();
$end_date = $end_date ? $end_date : time();
if ($start_date > $end_date) {
// 如果开始大于结束则交换
$temp = $start_date;
$start_date = $end_date;
$end_date = $temp;
}
// 计算时间差
$diff_date = diffDate(date('Y-m-d', $start_date), date('Y-m-d', $end_date));
$date = [];
if ($diff_date['year'] > 0) {
// 相差年大于0则说明相差年份,则格式化年
$date[] = date('Y', $start_date); // 添加开始年
while (($start_date = strtotime('+1 year', $start_date)) <= $end_date) {
$date[] = date('Y', $start_date); // 取得递增年;
}
} elseif ($diff_date['month'] > 0) {
// 相差月大于0则说明相差月份,则格式化年月
$date[] = date('Y-m', $start_date); // 添加开始月
while (($start_date = strtotime('+1 month', $start_date)) <= $end_date) {
$date[] = date('Y-m', $start_date); // 取得递增月;
}
$date[] = date('Y-m', $end_date); // 添加结束月
} else {
// 剩余情况默认格式化年月日
// 计算日期段内有多少天
$days = ($end_date - $start_date) / 86400 + 1;
// 保存每天日期
for ($i = 0; $i < $days; $i++) {
$date[] = date('Y-m-d', $start_date + (86400 * $i));
}
}
return $date;
}
diffDate:自定义的计算时间差方法,详情请见这里