如何判断某个时间是否在时间段范围内?
对于给定时间段,例如从 2022-1-1 ~ 2022-12-31,每隔 7 天做一次操作,我们需要判断某一时间(例如 2022-8-1)是否在时间段内并且需要进行操作。
对于这个问题,我们可以使用以下高效算法:
- 获取开始时间属于当前年份的第几天(start)。
- 获取今天属于当前年份的第几天(current)。
- 使用公式 (current – start) % interval == 0 来判断是否需要执行操作。
具体代码示例如下:
foreach ($data as $key => $item) { // 获取开始时间属于今年的第几天 $start = date('z', strtotime($item['start_date'])); // 获取今天属于第几天 $current = date("z"); // 算法:(今天的天数 - 开始的天数 ) / 7 的余数是不是 0 if (($current - $start) % $item['interval'] == 0) { // do something } }
使用此算法可以有效避免因时间段过长而导致内存溢出的问题。