php 排除周末与节假日程序实例代码
程序员文章站
2022-04-26 10:22:40
...
0 ){//周余凑整 $tmp = $weekday + $remain; if( $tmp >= 7 ){ $newoffset += 2; }else if( $tmp == 6 ){ $newoffset += 1; } //考虑当前为周六周日的情况 if( $weekday == 6 ){ $newoffset -= 1; }else if( $weekday == 7 ){ $newoffset -= 2; } } //再计算节假日引起的偏移 if( is_array($exception) ){//多个节假日 foreach ($exception as $day){ $tmp_time = strtotime($day); if( $tmp_time>$starttime && $tmp_time$starttime && $tmp_time 0){ #echo "[{$start} -> {$offset}] = [{$end} -> {$newoffset}]"."
"; return getendday($end,$newoffset,$exception,$allow); }else{ return $end; } } /** * 暴力循环方法 */ function getendday2( $start='now', $offset=0, $exception='', $allow='' ){ $starttime = strtotime($start); $tmptime = $starttime + 24*3600; while( $offset > 0 ){ $weekday = date('n', $tmptime); $tmpday = date('y-m-d', $tmptime); $bfd = false;//是否节假日 if(is_array($exception)){ $bfd = in_array($tmpday,$exception); }else{ $bfd = ($exception==$tmpday); } if( $weekday"; } $tmptime += 24*3600; } return $tmpday; } $exception = array( '2010-01-01','2010-01-02','2010-01-03', '2010-04-03','2010-04-04','2010-04-05', '2010-05-01','2010-05-02','2010-05-03', '2010-06-14','2010-06-15','2010-06-16', '2010-09-22','2010-09-23','2010-09-24', '2010-10-01','2010-10-02','2010-10-03','2010-10-04', '2010-10-05','2010-10-06','2010-10-07', ); //echo getendday('2010-08-27',3,''); //echo getendday('2010-06-25',15,'2010-07-07'); $t1 = microtime(); echo getendday('2010-05-12',66,$exception)."
"; $t2 = microtime();echo "use ".($t2-$t1)." s
"; echo getendday2('2010-05-12',66,$exception)."
"; $t3 = microtime();echo "use ".($t3-$t2)." s
";
永久链接:
转载随意!带上文章地址吧。
上一篇: webpack~_html/css_WEB-ITnose
下一篇: 没有php.ini如何处理?