显示某个日期而不计算周末天数

时间:2016-11-03 05:50:10

标签: php date

在我的应用程序中,我希望显示某个日期而不计算周末天数。

所以我有促销开始的日期:2016-11-03。促销期为45天。

$value['invesdate'] // 2016-11-03

$businessdays= date('Y-m-d', strtotime($value['invesdate'] . ' +45 day'));

宣传开始2016-11-03加上(+)45天= 2016-12-15

这是错误的日期,因为我计算和周末天。 corrct日期为2016-01-05

如何删除周末计算天数?

2 个答案:

答案 0 :(得分:2)

$startDate = '2016-11-03';
$numberofdays = 45;

$d = new DateTime( $startDate );
$t = $d->getTimestamp();

// loop for X days
for($i=0; $i<$numberofdays; $i++){

    // add 1 day to timestamp
    $addDay = 86400;

    // get what day it is next day
    $nextDay = date('w', ($t+$addDay));

    // if it's Saturday or Sunday get $i-1
    if($nextDay == 0 || $nextDay == 6) {
        $i--;
    }

    // modify timestamp, add 1 day
    $t = $t+$addDay;
}

$d->setTimestamp($t);

echo $d->format( 'Y-m-d' ). "\n";

DEMO http://phpio.net/s/azq

答案 1 :(得分:-1)

另一种最简单的方法:

$businessdays = date('Y-m-d', strtotime($value['invesdate'] . ' +45 weekdays'));
echo $businessdays;

PHP文档here中提供了许多预定义的引用。