生成仅在工作日

时间:2015-08-05 10:29:25

标签: php schedule dateinterval

我在PHP中有一个日期安排功能,目的只在工作日执行。我现在的代码是生成一周中所有日子的时间表,因此while语句似乎不起作用,我不确定原因。

我是学生,所以我对这种事情不是很有经验。这是我到目前为止的代码:

public static function generate_date_schedule($tasksperdayschedule, $startdate) {
    $schedule = [];

    $date = clone $startdate;

    foreach ($tasksperdayschedule as $numberoftasks) {
        $day = (int)$date->format('N');

        // Skip weekend days.
        while ($day > 5) {
            $date->add(new DateInterval('P1D'));
            $day = (int)$date->format('N');
        }

        $schedule[$date->format(self::DATE_FORMAT)] = $numberoftasks;

        $date->add(new DateInterval('P1D'));
    }

   return $schedule;

这可能是我想念的非常小的东西,但任何帮助都将不胜感激!感谢

1 个答案:

答案 0 :(得分:1)

我认为这是一个简单的逻辑错误。

while循环中,您正在更新$day,但foreach循环继续执行其余代码。

更好的是,您可以通过以下方式避免while循环:

if($day > 5)
    continue;