天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

計算一段日期內(nèi)的周末天數(shù)的php代碼(星期六,星期日總和)

復制代碼 代碼如下:
/*
| Author: Yang Yu <niceses@gmail.com>
| @param char|int $start_date 一個有效的日期格式,例如:20091016,2009-10-16
| @param char|int $end_date 同上
| @return 給定日期之間的周末天數(shù)
*/
function get_weekend_days($start_date,$end_date){

if (strtotime($start_date) > strtotime($end_date)) list($start_date, $end_date) = array($end_date, $start_date);

$start_reduce = $end_add = 0;

$start_N = date('N',strtotime($start_date));
$start_reduce = ($start_N == 7) ? 1 : 0;

$end_N = date('N',strtotime($end_date));
in_array($end_N,array(6,7)) && $end_add = ($end_N == 7) ? 2 : 1;

$days = abs(strtotime($end_date) - strtotime($start_date))/86400 + 1;

return floor(($days + $start_N - 1 - $end_N) / 7) * 2 - $start_reduce + $end_add;
}

備注:

最近寫給公司用的考勤系統(tǒng),把其中的一個功能自動化,就是每個月的工作日(出勤天數(shù))改為自動寫入,于是寫出以上函數(shù),用來計算兩個日期內(nèi)的周六周日總數(shù),稍微解釋下吧,這個功能當然是用循環(huán)實現(xiàn)是最簡單的,從開始那天for到結束那天,中間只要是周六或周日,就++,最后輕易算出總和,但還是那句話,循環(huán)的效率實在是不好,尤其當時間跨度過長時,慘不忍睹。

我這個函數(shù)的基本思路是四個字:前補后砍。沒聽懂吧?我也覺得有點莫名其妙。。。就是取得開始日期的星期數(shù),如果不足一周,則補上對應的天數(shù),比如開始日期是星期3,那么總天數(shù)就補上2天(星期1,星期2),如果開始日期是星期6,則補上5天,也就是6-1,就是函數(shù)中的$start_N - 1,如果開始日期恰好是周日,那么補上6天的同時,最后的結果需要減去一天(周六),也就是函數(shù)中的 $start_reduce ,好了,現(xiàn)在“前補”解釋完了。下面講下“后砍”,顧名思義,就是將后面多余的不足一周的天數(shù),砍掉,例如,結束日期為星期3,那么就從總天數(shù)里減去3天,如果結束日期為星期6或者星期天,那么減去6或7的同時,還要在最后補上1或2。

算法沒什么難點,核心思想就是將這個時間段調(diào)整為7的整數(shù),然后乘以2,在減去或加上多算和少算的周六或周日,得到的就是星期六和星期日的總和。最后算一段時間內(nèi)的天數(shù),不建議用date(z)來算,因為通用性會不好,涉及到跨年的問題,如果跨多年,還要考慮閏年的問題,倒不如這樣算來的直接。

改進記錄,加入$is_workday 參數(shù),可以選擇是否返回工作日,默認是返回休息日
復制代碼 代碼如下:
function get_weekend_days($start_date,$end_date,$is_workday = false){

if (strtotime($start_date) > strtotime($end_date)) list($start_date, $end_date) = array($end_date, $start_date);
$start_reduce = $end_add = 0;
$start_N = date('N',strtotime($start_date));
$start_reduce = ($start_N == 7) ? 1 : 0;
$end_N = date('N',strtotime($end_date));
in_array($end_N,array(6,7)) && $end_add = ($end_N == 7) ? 2 : 1;
$alldays = abs(strtotime($end_date) - strtotime($start_date))/86400 + 1;
$weekend_days = floor(($alldays + $start_N - 1 - $end_N) / 7) * 2 - $start_reduce + $end_add;
if ($is_workday){
$workday_days = $alldays - $weekend_days;
return $workday_days;
}
return $weekend_days;
}

php技術計算一段日期內(nèi)的周末天數(shù)的php代碼(星期六,星期日總和),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久99国产精品自在自在 | 国产国产乱老熟视频网站 | 真人做受120分钟免费看 | 99在线精品免费视频 | 久久人妻无码毛片A片麻豆 久久人妻熟女中文字幕AV蜜芽 | 国产精品婷婷久青青原 | 杨幂视频在线观看1分30秒 | 亚洲三级视频在线观看 | 久久精品熟女亚洲AV国产 | 善良的小峓子2在钱免费中文字 | 国产激情视频在线 | 夜夜国产亚洲视频香蕉 | 亚洲午夜精品A片久久WWW解说 | 亚洲 日韩经典 中文字幕 | 视频专区亚洲欧美日韩 | 无人区尖叫之夜美女姐姐视频 | 中文国产乱码在线人妻一区二区 | 欧美乱码卡一卡二卡四卡免费 | 黄桃AV无码免费一区二区三区 | 国产国语在线播放视频 | 黄页网站18以下勿看免费 | 且试天下芒果免费观看 | 最新国自产拍天天更新 | 尤物久久99国产综合精品 | 国产欧美日韩中文视频在线 | 欧美 亚洲 另类 综合网 | 亚洲精品午睡沙发系列 | 亚洲AV久久无码精品国产网站 | 在线观看成年人免费视频 | 2224x最新网站| 菲律宾毛片 | 国产精品一国产AV麻豆 | 国产欧美一区二区三区久久 | 日本理论片午午伦夜理片2021 | 99婷婷久久精品国产一区二区 | 99热这里只有的精品 | 最近中文字幕MV高清在线视频 | 24小时日本在线观看片 | 国产精品亚洲精品久久品 | 久久中文字幕无码A片不卡 久久中文字幕人妻熟AV女蜜柚M | 亚洲国产女人aaa毛片在线 |