比如从时间 2022-1-1
~ 2022-12-31
这段时间段内,每隔 7
天做一次操作。
有一张表:
id | start_date | end_date | interval (天) |
---|---|---|---|
1 | 2022-1-1 | 2022-12-31 | 7 |
2 | 2022-2-1 | 2222-12-1 | 11 |
想判断 2022-8-1
是否应该操作?
先查 sql
:
select * from table where `start_date` <= '2022-8-1' and `end_date` >= '2022-8-1'
循环查询:
foreach($data as $key => $item) {
$date = strtotime($item['start_date']);
$range = [];
while($date <= strtotime($item['end_date'])) {
$date = strtotime("+ {$data['interval']} days", $date);
$range[] = date('Y-m-d', $date);
}
if(!in_array('2022-8-1', $range)) {
continue;
} else {
//do some thing
}
}
这种方式 如果时间段太长 会超出内存大小
, 有没有什么好的方式?
不废话,直接上代码。这个还挺有意思的。