PHP-Datumsaspekt

巴扎黑
Freigeben: 2016-11-24 15:38:11
Original
1966 Leute haben es durchsucht

date_default_timezone_set('PRC');
/**
* Erhalten Sie das Datum, nachdem eine bestimmte Anzahl von Tagen seit einem bestimmten Datum vergangen ist,
* schließen Sie Samstage, Sonntage und Feiertage aus
* @param $start Startdatum
* @param $offset Anzahl von Tage vergangen
* @param $Exception Ausnahmefeiertage
* @param $allow Zulässige Daten (reservierte Parameter)
* @return
* Beispiele: Eingabe (2010-06-25,5,'' ),get2010-07-02
*/
function getEndDay( $start='now', $offset=0, $Exception='', $allow='' ){
//Berechnen Sie zuerst die Ergebnisse, ohne Samstage, Sonntage und Feiertage auszuschließen
$starttime = strtotime($start);
$endtime = $starttime + $offset * 24 * 3600;
$ end = date('Y-m-d', $endtime);
// Dann den durch Samstag und Sonntag verursachten Versatz berechnen
$weekday = date('N', $starttime);//Wochentagswert abrufen : 1-7
$remain = $offset % 7;
$newoffset = 2 * ($offset - $remain) / 7;//Jede Woche müssen zwei Tage neu berechnet werden
if( $remain > 0 ){//Wochentag aufrunden
$tmp = $weekday + $remain;
if( $tmp >= 7 ){
$newoffset += 2;
}else if ( $tmp == 6 ){
           $newoffset += 1; > $newoffset -= 1;
}else if( $weekday == 7 ){
$newoffset -= 2;
}
}
}
if( is_array($Exception) ){//Mehrere Feiertage
foreach ($Exception as $day){
$tmp_time = strtotime($day);
if ($ TMP_TIME & GT; Wochenenden
                                                                                                                 & ){
$ woekday_t = date ('n', $ tmp_time);
if ($ wochentag_t & lt; = 5) {
🎜>}
// Gemäß der Offset -Anzahl der Tage die äquivalente Operation
if($newoffset > 0){
  #echo "[{$start} -> {$offset}] = [{$end} -> {$newoffset}]". />n";
return getEndDay($end,$newoffset,$Exception,$allow);
}else{
        return $end;
    }
}
/**
* Violent-Loop-Methode
*/
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) ). < =5 && !$bfd){//不是周末和节假日
            $offset--;
            #echo "tmpday={$tmpday}"."
";
        }
   # 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- 22.09.','23.09.2010','24.09.2010',
    '01.10.2010','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
";

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage