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#反射(一)
    找回密码
    常用的webservice接口 .
    C# 反射应用技术
    Delphi简介
    C#程序思想简介
    如何跨线程访问window控件
    C#如何判断某个文件夹是否为共享,访问权限为只读
    Delphi基础
    Web Service接口
  • 原文地址:https://www.cnblogs.com/pcx105/p/13627380.html
Copyright © 2011-2022 走看看