php date aspect

巴扎黑
Release: 2016-11-29 11:52:07
Original
1140 people have browsed it

date_default_timezone_set('PRC');
/**
* Get the date after a certain number of days have passed since a certain date,
* Exclude Saturdays, Sundays and holidays
* @param $start      Start date
* @param $offset       Number of days passed
* @param $exception Exception holidays
* @param $allow Allowed dates (reserved parameters)
* @return
* examples: input (2010-06-25,5,''), get 2010-07-02
*/
function getEndDay( $start='now', $offset=0, $exception='', $allow='' ){
//First The calculation does not exclude the results of Saturdays, Sundays and holidays
$starttime = strtotime($start);
$endtime = $starttime + $offset * 24 * 3600;
$end = date('Y-m-d', $endtime) ;
      //Then calculate the offset caused by Saturday and Sunday
      $weekday = date('N', $starttime); // Get the weekday value: 1-7
        $remain = $offset % 7;
     $newoffset = 3 $tmp >= 7 ){
  
         if ( $weekday == 6 ){
                                                                                                             offset
if ( is_array($exception) ){//Multiple holidays
                                                                                                                                                                                                     //Within the range (a,b]
                                                                                                                use using using using           through using ’ ’s ’ through ’ through using using using using off out off out out out out out out out out out out out out out Out out out of  when to 5------, ;
}
                                                                                                                                   _time>$starttime && $tmp_time<=$endtime ) {
                                                                                        $weekday_t                                                                                                                                                                                                              Do equivalent operations recursively
if($newoffset > 0){
    #echo "[{$start} -> {$offset}] = [{$end} -> {$newoffset}]"."< ; br /& gt; n ";        return $end;
    }
}
/**
* Violent cycle method
*/
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<=5 && !$bfd){//不是周末和节假日
            $offset--;
            #echo "tmpday={$tmpday}"."
";
        }
        $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
";    


Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template