思路:
1.找出当前时间与活动开始时间的相差天数
取两个时间的相差天数,网上大部分是两个时间相减除以86400。
如果是小时不一样可能得到的值不一样,就无法知道向上取整还是向下取整;
可以获取今天与活动的开始时间相同的小时,本人没用;
本人的思路是获取两个差值的小时数,然后换算的天
2.相差的天数取模活动限制的天数(几天一次的几天)
如果等于0,当前轮回的开始时间就是今天
不等于0,就用当前时间往前推余数的天数
3.有了开始时间,结束时间就不用说了。
贴代码:
@param $activity_time 活动开始时间
@param $limit_number 几天一次
$current_time = time();
$reduce = ceil(($current_time - $activity_time)/3600/24); // 活动开始时间与当前时间相差的天数
$modulo = $reduce % $limit_number;
$start_date = $modulo == 0 ? date('Ymd') : date('Ymd', strtotime('-' . $modulo . ' day', $current_time));
$end_date = date('Ymd', strtotime('+' . $limit_number - 1 . ' day', strtotime($start_date)));
return [
'start_date' => $start_date,
'end_date' => $end_date,
];