PHP更新日期数组但不包括周末(周六和周日)

时间:2013-12-02 15:01:00

标签: php date

我正在循环显示当月的一系列天数,以生成当天或之后的另一个天数,这样做效果很好。我现在需要排除/省略任何日期,如果它们是星期六或星期日。

如果可以包含周六/周日日期的支票,我正在努力解决,例如:

date('N', strtotime($day)) >= 6);

使用我现有的代码生成数组:

// Get days for current month
    $day = date("Y-m-d");
    $i = strtotime($day);

    array("year" => array("month" => array(days)));
    $allDays = array(
        date('Y', $i) => array(
            date('n') => range(date('d', $i), intval(date('t'))),
        ),
    );

不确定如何将周末日期的测试与此相结合,或者我是否需要在这里使用forloop等?

2 个答案:

答案 0 :(得分:1)

假设您尝试在当前月份之外的所有日子(周末除外):您可以使用array_filter()进行回调以获取周末天数,然后使用{{ 3}}创建一个仅包含工作日的新数组:

$year = date('Y');
$month = date('n');

$weekend_days = array_filter($allDays[$year][$month], function($d) {
    return (date('N', strtotime(date("Y-m-$d"))) >= 6);
});

$allDays[$year][$month] = array_diff($allDays[$year][$month], $weekend_days);

print_r($allDays);

array_diff()

答案 1 :(得分:0)

在将每个值添加到数组之前,您可以检查日期:

if (!in_array(date('w', $i), array('0', '6')))
{
    // add $i to array
}