成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > PHP實現(xiàn)兩種排課方式

PHP實現(xiàn)兩種排課方式

熱門標簽:合肥ai電銷機器人費用 400電話個人能不能辦理 上海400客服電話怎么申請 手機外呼系統(tǒng)什么原理 天津電銷外呼系統(tǒng)違法嗎 凱立德地鐵站地圖標注 銀行信貸電話機器人 溫州外呼系統(tǒng)招商 滄州電銷外呼系統(tǒng)價格

兩種排課方式:

固定每周的固定時間上課(例:共上20節(jié),每周六、周日早上8點-10點上課。假如今天周六凌晨1點,那么排課也需要從今天開始)總共上幾個周,每周上課時間比較個性化(例:共上三周,第一周周一周二早上8點-10點上課;第二周周三周四下午8點-10點上課;第三周周日中午11點-12點上課。)

第一種排課比較好實現(xiàn),簡要代碼如下:

/**
     * 生成日期列表
     *
     * @param  int $startDate 開始日期 時間戳格式
     * @param  array $timeList 課時計劃列表
       [
        {
            "start_at": "09:09", //開課時間
            "end_at": "10:09",   //結(jié)束時間
            "week_at": 1         //周幾
        },
        {
            "start_at": "12:09", //開課時間
            "end_at": "13:09",   //結(jié)束時間
            "week_at": 1         //周幾
        },
        {
            "start_at": "09:09",
            "end_at": "10:09",
            "week_at": 5
        }
       ]
     * @param  int $amount 課時計劃數(shù)量
     * @param  int $skipHoliday 跳過節(jié)假日
     *
     * @return array
     */
    public function generateDateList($startDate, $timeList, $amount, $skipHoliday = 0)
    {
        // 計算開始日期是周幾
        $startDateWeek = intval(date('N', $startDate));
 
        //規(guī)范化課時數(shù)據(jù) week_at 做key的三維數(shù)組
        foreach ($timeList as $item) {
 
            $weekAt = $item['week_at'];
            
            array_splice($item, 0, 0, $weekAt);
            $key = array_shift($item);
            $weeksTime[$key][] = $item;
            $item = null;
        }
 
        unset($timeList);
 
        if (empty($weeksTime)) {
            $this->addError('課時計劃數(shù)據(jù)為空');
            return false;
        }
 
        //設(shè)置跳過假期,獲取開始日期之后的節(jié)假日
        if ($skipHoliday) {
            $holiday = new Holiday();
            $holidayData = $holiday->getHolidayList($startDate);
            $holiday = null;
            unset($holiday);
        }
 
        $nowTime = time();
        $list = array();
 
        for ($weekStartTime = $startDate, $count = 0; $count  $amount; $weekStartTime += 86400 * 7) {
 
            //$currentWeek :周幾
            foreach ($weeksTime as $currentWeek => $weekTime) {
 
                foreach ($weekTime as $time) {
 
                    //算出對應(yīng)的日期時間戳
                    $currentDateTime = $weekStartTime + (($startDateWeek = $currentWeek ? ($currentWeek - $startDateWeek) : (7 - $startDateWeek + $currentWeek)) * 86400);
                    //對應(yīng)的日期 = 開始時間 + ((開始時間對應(yīng)周 = 數(shù)據(jù)對應(yīng)的周幾 ? (數(shù)據(jù)對應(yīng)的周幾 - 開始時間對應(yīng)周) :(7 - 開始時間對應(yīng)周 + 數(shù)據(jù)對應(yīng)的周幾)) * 86400)
                    //假期跳過排課
                    if ($skipHoliday  !empty($holidayData)) {
                        $startUnix = $currentDateTime + $time['start_at'] * 3600;  //開始時間
                        $endUnix = $currentDateTime + $time['end_at'] * 3600;     //結(jié)束時間
 
                        $skip = false;
 
                        //選擇跳過節(jié)假日,且節(jié)假日與當前課程時間有重疊跳過
                        foreach ($holidayData as $item) {
                            if (($item['start_at']  $endUnix  $item['end_at'] > $startUnix) || ($item['start_at'] === $startUnix  $item['end_at'] === $endUnix)) {
                                $skip = true;
                                continue;
                            }
                        }
 
                        if ($skip) {
                            continue;
                        }
                    }
 
                    $currentDate = date('Y/m/d', $currentDateTime);
                    $startAt = strtotime($currentDate . $time['start_at'] . ':00');
                    $endAt = strtotime($currentDate . $time['end_at'] . ':00');
 
                    if($startAt  $nowTime || $endAt  $nowTime){
                        $this->addError('上課時間不能小于當前時間');
                        return false;
                    }
 
                    $list[] = [
                        'date_at' => $currentDateTime, //日期
                        'week_at' => $currentWeek,     //周幾
                        'start_at' => $startAt,
                        'end_at' => $endAt
                    ];
 
                    $count++;
 
                    if ($count >= $amount) {
                        break 3;
                    }
                }
            }
        }
 
        $weeksTime = null;
        unset($weeksTime);
 
        return $list;
    }

(例子,只用來展示數(shù)據(jù)結(jié)構(gòu))假如總共5節(jié)課時,從6-25日開始排課,每周一、周六上課:

(例子,只用來展示數(shù)據(jù)結(jié)構(gòu))排課結(jié)果為:


第二種排課方式稍微麻煩一點,簡要代碼如下:

/**
     * 生成日期列表
     *
     * @param  int $startDate 開始日期 時間戳格式
     * @param  array $taskList 任務(wù)列表
    [
        {
            "start_at": "09:09", //開始上課時間
            "end_at": "10:09",   //結(jié)束時間
            "week_at": 1,        //周幾
            "week_number": 1     //第幾周
        },
        {
            "start_at": "09:09",
            "end_at": "10:09",
            "week_at": 2,
            "week_number": 1
        },
        {
            "start_at": "09:09",
            "end_at": "10:09",
            "week_at": 1,
            "week_number": 3
        }
    ]
     *
     * @return array
     */
    public function generateDateList($startDate, $taskList)
    {
        // 計算開始日期是周幾
        $startDateWeek = intval(date('N', $startDate));
 
        $list = [];
        $nowTime = time();
        $weekSign = $week = 0;
 
        foreach($taskList as $key => $task){
 
            if($task['week_number'] > $weekSign  $task['week_number'] != $week){
                $weekSign = $task['week_number'] - $week;
            }
 
            //計算每條數(shù)據(jù)對應(yīng)的日期 $key == 0:確定第一周第一節(jié)課是在本周還是下一周
            if($key == 0 || $task['week_number'] == $week){
 
                if($task['week'] >= $startDateWeek){
                    $task['date_at'] = $startDate +
                        (($weekSign - 1) * 7 + ($task['week'] - $startDateWeek)) * 86400;
                }else{
                    $task['date_at'] = $startDate +
                        (($weekSign) * 7 - ($startDateWeek - $task['week'])) * 86400;
                }
            }else{
                if($task['week'] > $startDateWeek){
                    $task['date_at'] = $startDate +
                        (($weekSign) * 7 + ($task['week'] - $startDateWeek)) * 86400;
                }else{
                    $task['date_at'] = $startDate +
                        (($weekSign) * 7 - ($startDateWeek - $task['week'])) * 86400;
                }
            }
 
            $startDateWeek = intval(date('N', $task['date_at']));
 
            $week = $task['week_number'];
 
            $startDate = $task['date_at'];
 
            $dateAt = date('Y/m/d', $task['date_at']);
 
            $startAt = strtotime($dateAt . '00:00:00');
            if($task['start_at']){
                $startAt = strtotime($dateAt . $task['start_at'] . ':00');
            }
 
            $endAt = strtotime($dateAt . '23:59:59');
            if($task['end_at']){
                $endAt = strtotime($dateAt . $task['end_at'] . ':00');
            }
 
            if($startAt  $nowTime || $endAt  $nowTime){
                $this->addError('上課時間不能小于當前時間');
                return false;
            }
 
            $task['start_at'] = $startAt;
            $task['end_at'] = $endAt;
 
            //生成課時數(shù)據(jù)
            $list[] = [
                    'date_at' => $task['date_at'],
                    'week_at' => $task['week'],
                    'start_at' => $startAt,
                    'end_at' => $endAt
                ];
        }
 
        return $list;
    }

(例子,只用來展示數(shù)據(jù)結(jié)構(gòu))排課數(shù)據(jù):

(例子,只用來展示數(shù)據(jù)結(jié)構(gòu)) 排課結(jié)果:

到此這篇關(guān)于PHP實現(xiàn)兩種排課方式的文章就介紹到這了,更多相關(guān)PHP實現(xiàn)排課內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 詳細分析PHP7與PHP5區(qū)別
  • php生成用戶密碼的兩種方式
  • php類中static與self的使用區(qū)別淺析
  • php如何用PDO操作大數(shù)據(jù)對象
  • php使用workman框架實現(xiàn)socket服務(wù)以及連接客戶端

標簽:酒泉 洛陽 赤峰 溫州 白城 金華 怒江 七臺河

巨人網(wǎng)絡(luò)通訊聲明:本文標題《PHP實現(xiàn)兩種排課方式》,本文關(guān)鍵詞  PHP,實現(xiàn),兩種,排課,方式,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP實現(xiàn)兩種排課方式》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP實現(xiàn)兩種排課方式的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    狠狠入ady亚洲精品| 精品视频第一区| 99久久精品免费看国产免费软件| 欧美一区国产一区| 尤物视频网站在线观看| 蜜臀av免费一区二区三区| 成人动漫在线免费观看| 亚洲3区在线| 国产又大又长又粗又黄| 成人国产精品免费观看动漫| 精品国产一区二区三区性色av| 久久夜色精品一区| 精品久久久久久无码人妻| 国产情人综合久久777777| 亚洲一级Av无码毛片久久精品| 亚洲欧美日韩直播| 中文字幕在线播放av| 尤物yw午夜国产精品视频| 亚洲柠檬福利资源导航| 国产欧洲精品视频| 亚欧精品一区二区三区| 欧美日韩在线精品一区二区三区激情综合| 欧美日韩激情视频在线观看| 国产乱码精品一区二区三区精东| 欧美v亚洲v综合ⅴ国产v| 中文字幕日韩精品在线| 久久久久亚洲av片无码v| 欧美韩日精品| 国产成人精品免高潮在线观看| 国产精品久久久久久久久久久不卡| 亚洲大型综合色站| 不卡av电影在线播放| 欧美成人午夜做爰视频在线观看| 四虎4hutv紧急入口| 国产精品国产三级国产普通话三级| 四虎永久在线高清国产精品| 亚洲免费视频播放| 亚洲精品乱码久久久久久动漫| 国产婷婷色一区二区三区在线| 欧美激情一区二区三区久久久| 欧美国产高跟鞋裸体秀xxxhd| 女人扒开屁股爽桶30分钟| 日本午夜一区二区| 99精品人妻国产毛片| 日韩中文字幕国产精品| 欧美日韩高清在线一区| 国产高清视频免费| 一区二区亚洲精品| 1024手机在线视频| 91丨porny丨蝌蚪视频| 深夜福利影院在线观看| 亚洲人成久久| 91精品国产91久久久久久不卡| 国产精品一区2区| 成人激情黄色小说| 最新黄网在线观看| 国产a∨精品一区二区三区不卡| 国产福利av网站| 国产一区二区不卡视频在线观看| 成人性生交大片免费看视频r| 亚洲综合激情另类专区老铁性| 黑人精品一区| 青青草国产成人av片免费| 91香蕉一区二区三区在线观看| 日韩在线中文字幕视频| 老司机午夜网站| 欧美aaa一级片| 玖玖精品在线| 婷婷五月综合久久中文字幕| 337p日本欧洲亚洲大胆色噜噜| 99视频免费| 亚洲精品自在在线观看| 成人区精品一区二区| 色综合久久精品亚洲国产| 国产夫绿帽单男3p精品视频| 欧美性极品少妇| 午夜国产在线| 欧美a视频在线观看| 亚洲无人区一区| 国产美女主播在线播放| 久久爱av电影| 嫩草视频在线观看| 在线播放evaelfie极品| 中文天堂在线播放| 蜜桃福利午夜精品一区| 久草手机在线观看| 91亚洲精品在线观看| 国产精品视频地址| 日本精品一二三区| 青青久在线视频免费观看| 日本a级黄色| 亚洲宅男天堂在线观看无病毒| 成人黄色在线免费| 国产美女作爱全过程免费视频| 国产精品人妖ts系列视频| 精品一区二区电影| 伊人色综合久久天天| 欧美日韩一区二区免费视频| 亚洲精品国产一区二区三区四区在线| 九七伦理97伦理手机| 国产精品怡红院| 香蕉久久一区二区不卡无毒影院| 国产三级按摩推拿按摩| 欧美一区二区三区视频在线| 日本高清不卡的在线| 麻豆视频在线免费看| 国产精品激情| 久久精品国产亚洲夜色av网站| 日韩高清av一区二区三区| 国产亚洲欧洲一区高清在线观看| www.17c.com喷水少妇| 久久久噜噜噜久久人人看| 全色精品综合影院| 伊人网在线免费| heyzo国产| 国产v日产∨综合v精品视频| 中文在线观看免费视频| 伊人网综合在线| 成人动漫视频在线观看完整版| 欧美精品亚洲一区二区在线播放| 调教驯服丰满美艳麻麻在线视频| 国产精品人人做人人爽| xvideos入口| 久久99久久99精品免观看粉嫩| 亚洲人成毛片在线播放| 国产剧情在线一区| 国产这里只有精品| 亚洲一区二区三区中文字幕| 欧美女孩性生活视频| 亚洲乱码国产乱码精品精的特点| 欧美精品在线观看一区二区| 亚洲不卡中文字幕无码| 91视频播放| 色噜噜色狠狠狠狠狠综合色一| 狠狠躁夜夜躁人人爽视频| 四虎4545www国产精品| 最新中文字幕亚洲| 91精彩刺激对白露脸偷拍| 美女视频第一区二区三区免费观看网站| 中文字幕在线看视频国产欧美| 8x国产一区二区三区精品推荐| 网站永久看片免费| 国产亚洲欧美日韩一区二区| 欧洲grand老妇人| 手机看片福利在线观看| 老熟女高潮一区二区三区| 国产成人在线免费| 在线视频精品一区| 毛片大全在线观看| 成人在线视频免费观看| 在线观看亚洲一区二区| 欧美性生活久久| 久久久久久久久国产| 在线视频欧美区| 老司机精品视频在线观看6| 欧美日韩国产高清视频| 中文字幕人成高清视频| 无套内谢的新婚少妇国语播放| 国产亚洲视频中文字幕视频| 久久久久久91亚洲精品中文字幕| 被男同事摸的水好多| 极品粉嫩小仙女高潮喷水久久| 日韩伦理在线电影| 男人猛进猛出女人屁股视频| 天天在线女人的天堂视频| 无码国产69精品久久久久网站| 91久久久亚洲精品| 成人h视频在线观看播放| 日本欧美黄色片| 一区二区三区视频免费| 熟女丰满老熟女熟妇| 青草视频在线播放| 亚洲一区欧美在线| 国产精品秘入口18禁麻豆免会员| 日韩 欧美 中文| 久久精品无码中文字幕| 可以直接看的av网址站| 成人婷婷网色偷偷亚洲男人的天堂| 日韩免费精品视频| 日韩三级影院| 午夜精品一区二区三区在线播放| 日本天堂影院在线视频| 免费在线观看av片| 视频一区视频二区视频三区视频四区国产| 日韩成人小视频| 色鬼7777久久| 国产精品高潮呻吟久久av野狼| 五月天网站亚洲| 99pao成人国产永久免费视频| 国产精品福利在线观看播放| 久久精品九色| 国产在线视精品麻豆| 99re6在线观看| 欧美 日韩 国产在线观看| 91.com在线观看| 亚洲国产精品一区| 香蕉视频黄色在线观看| 日韩欧美猛交xxxxx无码| 成人爽a毛片| 欧美一级免费在线| 高清欧美一区二区三区| www.亚洲视频| 狠狠噜天天噜日日噜| 日本中文字幕成人| 一级毛片在线| 国产成人亚洲精品无码h在线| 国产精品中文有码| 亚洲s码欧洲m码国产av| 蜜臀精品一区二区| 在线观看欧美成人| 亚洲最大成人综合| 视频一区二区三区四区五区| igao视频网在线视频| 秋霞午夜一区二区| 日韩高清在线观看一区二区| 亚洲在线日韩| 一区二区三区四区国产| 香蕉大人久久国产成人av| 日韩在线观看免费av| av成人老司机| 美女视频a黄免费| 蜜桃av中文字幕| 成年人午夜视频| 国产一区三区在线播放| jizz性欧美10| 欧美经典一区二区| 日本天堂中文字幕| 亚洲人成电影网站色| 久久日韩精品一区二区五区| 成人污污视频| 日韩av一区二区三区四区| 免费超爽大片黄| 激情一区二区三区| 午夜免费电影一区在线观看| 日韩欧美第二区在线观看| 最近最好的中文字幕2019免费| 欧美3p在线观看| 欧美人禽zoz0强交| 亚洲日本国产精品| 国产电影一区二区三区| 中文字幕日韩在线观看| 欧美精品成人91久久久久久久| 国产精品国产亚洲精品看不卡15| 九9re精品视频在线观看re6| 亚洲美女中文字幕| 欧美特黄一区二区三区| 午夜视频免费播放| 宅男噜噜噜66国产日韩在线观看| 啊啊啊好爽视频| 国产极品精品在线观看| 污视频网站免费在线观看| 久久精品国产欧美亚洲人人爽| 中文字幕日韩精品有码视频| 久久精品国产亚洲精品2020| 91制片厂免费观看| 亚洲成av人乱码色午夜| 老司机性视频| 手机毛片在线观看| 缅甸午夜性猛交xxxx| 久久av.com| 亚洲欧洲精品一区二区三区不卡| 91破解版在线观看| 国产欧美一区| 亚洲人成电影网站色www| 日韩欧美国产大片| 久久久av一区| 美女视频黄免费的久久| 欧美久久高跟鞋激| 国产女主播在线直播| 久久a级毛片毛片免费观看| 国产三级在线看| 欧美一区二区三区影视| 亚洲第一区中文字幕| 成人亚洲一区二区| 国产一区二区网址| 久久久www成人免费精品张筱雨| 91精品国产高清一区二区三密臀| 91成人免费在线| 中文资源在线官网| 欧美性大战久久久久久久蜜臀| 欧美日韩在线看片| 黄色片免费观看| 国产成人女人毛片视频在线| 日本成人动漫在线观看| 国产美女免费视频| 香蕉伊大人中文在线观看| 高清欧美性猛交| 亚洲第一se情网站| 日韩av电影在线免费播放| 黄色视屏网站在线免费观看| 青青草国产精品| 亚洲天堂2016| 丝袜连裤袜欧美激情日韩| 欧美成人一区二区| 丰满人妻老熟妇伦人精品| 亚洲911精品成人18网站| 亚洲人妖在线| 亚洲成色www.777999| 欧美三级一级片| 久久精品1区| 国产理论电影在线观看| 国产成人精品一区二区免费看京| 黄色激情在线播放| 久久精品国产www456c0m| 欧美三级韩国三级日本一级| 成人网免费看| 欧美日韩国产综合在线| 精品美女一区二区三区| 丁香花高清在线观看完整版| 色综合久久中文| 欧美精品在线观看播放| 国产精品视频久久久久久| 精品毛片三在线观看| 欧美三级超在线视频| 国产一区二区三区18| 久久久国产精品免费| 国产中文字幕av| 日韩电影在线观看永久视频免费网站| 精品久久久久一区二区三区| 欧美日韩中文不卡| 写真福利精品福利在线观看| 视频精品二区| 无夜福利视频观看| 国产一区二区三区四区老人| 欧美色窝79yyyycom| 国内视频在线精品| 嫩草影院永久入口| 濑亚美莉vs黑人在线观看|