日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php获取本月工作日,ThinkPHP中获取指定日期后工作日的具体日期方法

發布時間:2023/12/19 php 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php获取本月工作日,ThinkPHP中获取指定日期后工作日的具体日期方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ThinkPHP中獲取指定日期后工作日的具體日期方法

來源:中文源碼網????瀏覽: 次????日期:2019年11月5日

【下載文檔:??ThinkPHP中獲取指定日期后工作日的具體日期方法.txt?】

(友情提示:右鍵點上行txt文檔名->目標另存為)

ThinkPHP中獲取指定日期后工作日的具體日期方法思路:

1、獲取到查詢年份內所有工作日數據數組

2、獲取到查詢開始日期在工作日的索引

3、計算需查詢日期索引

4、獲得查詢日期

/*創建日期類型記錄表格*/CREATE TABLE `tb_workday` (`did` int(11) NOT NULL AUTO_INCREMENT,`exact_date` varchar(32) NOT NULL COMMENT '具體日期:格式date("Ymd");(20170205)',`date_year` varchar(32) NOT NULL COMMENT '具體日期:格式date("Y");(2017)',`date_type` tinyint(2) NOT NULL COMMENT '日期類型:0、工作日;1、特殊工作日;2、法定節假日',PRIMARY KEY (`did`)) ENGINE=InnoDB AUTO_INCREMENT=829 DEFAULT CHARSET=utf8 COMMENT='各年工作日&法定節假日數據' $_date) { $_ret = 0; $_date = date('Ymd', strtotime($_date)); $_post_data = array('date' => $_date); $_ret_curl = curl_post($url, $_post_data); $_ret_curl = json_decode($_ret_curl, true); //工作日 if ($_ret_curl['data'] == 0) { $dateData['exact_date'] = $_date; $dateData['date_year'] = $year; $dateData['date_type'] = 0; $_ret = $m->add($dateData) ? 1 : 0; unset($dateData); //工作日 判斷是否為周末 if (in_array(self::get_week($_date), array(0, 1))) { //特殊工作日 $dateData['exact_date'] = $_date; $dateData['date_year'] = $year; $dateData['date_type'] = 1; $_ret = $m->add($dateData) ? 1 : 0; unset($dateData); } } //法定節假日 if ($_ret_curl['data'] == 2) { $dateData['exact_date'] = $_date; $dateData['date_year'] = $year; $dateData['date_type'] = 2; $_ret = $m->add($dateData) ? 1 : 0; unset($dateData); } //休息日(周末) 暫不處理 /*if ($_ret_curl['data'] == 1) { }*/ $_ret && $count++; unset($_date, $_post_data, $_ret_curl, $_ret); } return $count; } /** * 獲取當年所有工作日 (從數據庫獲取,數據庫無數據則先更新數據) * @param string $year 當年年份 * @return array */ private function getWorkDays($year) { $m = M('tb_workday'); $map['date_year'] = $year; $map['date_type'] = 0; $DateArray = $m->field('exact_date')->where($map)->select(); if (!empty($DateArray)) { $DateArray = array_column($DateArray, 'exact_date'); return $DateArray; } else { //更新數據庫工作日數據 $ret = self::updateDate($year); if ($ret > 0) { return self::getWorkDays($year); } else { return false; } } } /** * 獲取開始日期后第N個工作日具體日期 * @param $startdate string 計算開始日期 需包含年月日信息 * @param $days int 間隔天數 * @return mixed 成功返回 對應日期,失敗返回false */ public function getNextWorkDate($startdate, $days) { $year = date('Y', strtotime($startdate)); $startdate = date('Y-m-d', strtotime($startdate)); $workDays = $this->getWorkDays($year); $search_key = array_search(date('Ymd', strtotime($startdate)), $workDays); if ($search_key === false) {//查詢日期為非工作 //獲取查詢日期前最近工作日 $m = M('tb_workday'); $map['date_year'] = $year; $map['date_type'] = 0; $map['DATE_FORMAT(`exact_date`,\'%Y-%m-%d\')'] = array('LT', $startdate); $_search_date = $m->where($map)->order('`exact_date` DESC')->getField('exact_date'); $search_key = array_search($_search_date, $workDays); unset($m, $map, $_search_date); } $t_key = $search_key + $days; if ($t_key <= count($workDays) - 1) { return date('Y-m-d', strtotime($workDays[$t_key])); } else { //查詢日期已跨年 $n_days = $days - (count($workDays) - 1 - $search_key); $next_year = $year + 1; return $this->getNextWorkDate($next_year . '-01-01', $n_days - 1); } }} $startdate = '2018-09-28';$days = 5; $class = new work_days();$_date_workday = $class->getNextWorkDate($startdate, $days);echo $_date_workday;//2018-10-10以上代碼大家可以在本地測試一下,感謝大家對中文源碼網的支持。

親,試試微信掃碼分享本頁!?*^_^*

總結

以上是生活随笔為你收集整理的php获取本月工作日,ThinkPHP中获取指定日期后工作日的具体日期方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。