获取活动的轮回开始截止时间(几天一次活动,不处理一天一次)

思路:

  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,
];
posted @ 2017-10-24 11:25  爱冯果  阅读(301)  评论(1编辑  收藏  举报