时间:2021-11-27 16:38:50
$params['start_date'] = '2021-09-01';
$params['end_date'] = '2021-11-01';
$params['group_type'] = 1;// 分组类型(1按日、2按周、3按月)
// 分组类型(1按日、2按周、3按月)
if ($params['group_type'] == 1) {
$keys = array_map(function ($item) {
return date('Y-m-d', $item);
}, range(strtotime($params['start_date']), strtotime($params['end_date']), 86400));
$title = array_values($keys);
} elseif ($params['group_type'] == 2) {
$keys = [];
for ($i = strtotime($params['start_date']); $i <= strtotime($params['end_date']); $i += 86400) {
$w = date('W', $i);
if (!isset($keys[$w])) {
$keys[$w] = date('Y-m-d', $i);
isset($keys[$w - 1]) && $keys[$w - 1] .= ' ~ ' . date('Y-m-d', $i - 86400);
}
}
$keys[max(array_keys($keys))] .= ' ~ ' . $params['end_date'];// 最后一个特殊处理
$keys = array_flip($keys);
$title = array_keys($keys);
} else {
$keys = [];
$startTime = strtotime($params['start_date']);
$endTime = strtotime($params['end_date']);
// 默认将开始时间添加进去,有需要的情况下自己更改;
$keys[] = date('Y-m', $startTime);
while (($startTime = strtotime('+1 month', $startTime)) <= $endTime) {
$keys[] = date('Y-m', $startTime);
// 取得递增月;
}
$title = array_values($keys);
}
print_r($title);



根据分组类型生成2021年9月1日至11月1日的时间区间标题
该代码片段展示了如何根据不同的分组类型(日、周、月)生成2021年9月1日至11月1日期间的详细时间区间列表,用于创建报表或分析数据。
1237

被折叠的 条评论
为什么被折叠?



