添加X天到目前为止,不包括周末

And*_*rei 2 php date

我目前正在开发一个在线订阅应用程序.我在用户将选择订阅天数然后选择开始日期的部分遇到了一些挑战.然后PHP应用程序应该能够计算结束日期,不包括周末.

<form method="post">
    <input name="startdate" type="text" />
    <input name="numberofdays" type="text" />
</form>
Run Code Online (Sandbox Code Playgroud)

有人可以帮我这个吗?

Mih*_*rga 14

取决于startdate发送方式,但假设您使用的是Ymd,则可以使用DateTime

例如:

<?php 

    $_POST['startdate'] = '2012-08-14';
    $_POST['numberofdays'] = 10;

    $d = new DateTime( $_POST['startdate'] );
    $t = $d->getTimestamp();

    // loop for X days
    for($i=0; $i<$_POST['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";

?>
Run Code Online (Sandbox Code Playgroud)

  • 你可以使用strtotime('+ 1day',$ t)来摆脱魔法数字. (3认同)