亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2009年11月12日 20:29:31   作者:  
算法沒什么難點,核心思想就是將這個時間段調(diào)整為7的整數(shù),然后乘以2,在減去或加上多算和少算的周六或周日,得到的就是星期六和星期日的總和。
復(fù)制代碼 代碼如下:

/*
| 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ù),稍微解釋下吧,這個功能當(dāng)然是用循環(huán)實現(xiàn)是最簡單的,從開始那天for到結(jié)束那天,中間只要是周六或周日,就++,最后輕易算出總和,但還是那句話,循環(huán)的效率實在是不好,尤其當(dāng)時間跨度過長時,慘不忍睹。

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

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

改進(jìn)記錄,加入$is_workday 參數(shù),可以選擇是否返回工作日,默認(rèn)是返回休息日
復(fù)制代碼 代碼如下:

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;
}

相關(guān)文章

  • php中請求url的五種方法總結(jié)

    php中請求url的五種方法總結(jié)

    最近開發(fā)中遇到一個問題,程序第4行會請求一個url,通過查找相關(guān)的資料發(fā)現(xiàn)有多種方法,本文給大家介紹了關(guān)于php中請求url的五種方法,分別是用fopen()函數(shù)、file()函數(shù)、file_get_contents()函數(shù)、curl() 請求遠(yuǎn)程url數(shù)據(jù)和exec() 執(zhí)行命令行命令,下面來一起看看吧。
    2017-07-07
  • php empty函數(shù) 使用說明

    php empty函數(shù) 使用說明

    對于我們做php開發(fā)的來說,empty函數(shù)(注,其實empty是一個語言結(jié)構(gòu)而非函數(shù),這里說函數(shù)只是個人習(xí)慣)是再熟悉不過的一個函數(shù)了,查PHP的手冊描述如下
    2009-08-08
  • 利用PHP實現(xiàn)智能文件類型檢測的實現(xiàn)代碼

    利用PHP實現(xiàn)智能文件類型檢測的實現(xiàn)代碼

    通常我們想嚴(yán)格限制文件類型的時候,可以簡單地用$_FILES['myFile']['type']  取得文件的 MIME類型然后來檢測它是否是合法的類型。
    2011-08-08
  • PHP實現(xiàn)圖片上傳并壓縮

    PHP實現(xiàn)圖片上傳并壓縮

    這篇文章主要介紹了PHP實現(xiàn)圖片上傳并壓縮的相關(guān)資料,上傳圖片然后按照比例縮略圖,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 詳解PHP框架EasySwoole

    詳解PHP框架EasySwoole

    EasySwoole是一款常駐內(nèi)存型的分布式swoole框架,專為API而生,支持同時混合監(jiān)聽HTTP、WebSocket、自定義TCP、UDP協(xié)議,且擁有豐富的組件,例如協(xié)程 連接池、TP風(fēng)格的協(xié)程ORM、協(xié)程微信SDK等諸多組件。讓開發(fā)者編寫出多進(jìn)程,可異步,高可用的應(yīng)用服務(wù)。
    2021-05-05
  • php表單敏感字符過濾類

    php表單敏感字符過濾類

    這篇文章主要介紹了php表單敏感字符過濾類及其用法實例,詳細(xì)分析了表單生成與提交等環(huán)節(jié)針對敏感字符的過濾功能,是非常實用的技巧,需要的朋友可以參考下
    2014-12-12
  • php源碼加密 仿微盾PHP加密專家(PHPCodeLock)

    php源碼加密 仿微盾PHP加密專家(PHPCodeLock)

    php源碼加密 仿照 微盾PHP加密專家(PHPCodeLock),需要的朋友可以參考下。
    2010-05-05
  • PHP循環(huán)獲取GET和POST值的代碼

    PHP循環(huán)獲取GET和POST值的代碼

    用php循環(huán)獲取頁面中g(shù)et和post的值
    2008-04-04
  • PHP日期函數(shù)date格式化UNIX時間的方法

    PHP日期函數(shù)date格式化UNIX時間的方法

    這篇文章主要介紹了PHP日期函數(shù)date格式化UNIX時間的方法,實例分析了php中date函數(shù)的使用技巧,需要的朋友可以參考下
    2015-03-03
  • php微信公眾平臺開發(fā)類實例

    php微信公眾平臺開發(fā)類實例

    這篇文章主要介紹了php微信公眾平臺開發(fā)類,實例分析了針對微信消息的響應(yīng)、回復(fù)、編碼等相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04

最新評論