zoukankan      html  css  js  c++  java
  • 短时间内,计算连续签到天数

    function sign_count(){
            $cur_day = date('Ymd',time());
            $arr = [
                ['id' => 7, 'sign_time' => '20200907'],
                ['id' => 6, 'sign_time' => '20200905'],
                ['id' => 4, 'sign_time' => '20200904'],
                ['id' => 3, 'sign_time' => '20200903'],
                ['id' => 2, 'sign_time' => '20200902'],
                ['id' => 1, 'sign_time' => '20200901'],
            ];
    
            $add_count_days = 0;//连续签到天数
            $count = 0;  //累计签到天数
            $day_list = [];
            if (!empty($arr)){
                foreach ($arr as $k=>$v){
                    $day_list[] = $v['sign_time'];
                }
                $count = count($day_list); //累计签到天数
            }
         $latelyDay = isset($day_list[0]) ? $day_list[0] : 0;//最近一次完成时间
         //PS跨月的会有问题 (strtotime($endDate) - strtotime($startDate)) / (24 * 3600) 计算相差天数
    if($cur_day - 1 > $latelyDay){ var_dump(array('add_days'=>$add_count_days,'total_day'=>$count)); } else { $add_count_days = 1;//连续签到天数 } for($i = 0;$i < $count - 1;$i++){ $res = $this->compareDay($day_list[$i], $day_list[$i+1]); if($res) $add_count_days++; else break; } var_dump(array('add_days'=>$add_count_days,'total_day'=>$count)); }

     /**
    * 比较当天签到天数与上一次签到时间
    * @param string $curDay 当天签到天数
    * @param string $nextDay 上一次签到天数
    * @return boolean
    */

    function compareDay($curDay,$nextDay)
        {
        //跨月的会有问题 直接 (strtotime($endDate) - strtotime($startDate)) / (24 * 3600) 计算相差天数 if($curDay - 1 == $nextDay){ return true; }else{ return false; } }
  • 相关阅读:
    C++ STL 一般总结(转载)
    Python高级语法总结
    Adaboost 算法的原理与推导——转载及修改完善
    简化版SMO算法标注
    【转载】机器学习算法基础概念学习总结
    C++中添加配置文件读写方法
    Python中scatter()函数--转载
    python 之 strip()--(转载)
    zabbix邮件报警脚本(Python)
    Linux常用命令
  • 原文地址:https://www.cnblogs.com/pcx105/p/13627380.html
Copyright © 2011-2022 走看看