PHP-获取未来5个工作日的日期


PHP - Get dates of next 5 weekdays?

我正在尝试创建一个包含接下来5个工作周(周一至周五,不包括今天)的数组。我知道世界各地的工作周各不相同,但这对我想做的事情并不重要

因此,例如,如果今天是星期三,我想要本周的星期四和星期五以及下一周的星期一、星期二和星期三的日期。

我以为这会奏效:

$dates = array();
for ($i = 1; $ < 6; $i ++)
{
    $dates[] = date('Y-m-d', strtotime('+ '.$i.' weekday'));
}

但就今天而言,它给了我:

  • 1日星期一
  • 2日星期二
  • 3日星期三
  • 4日星期四
  • 星期日7号

如有任何建议,不胜感激。

感谢

试试这个

$dates = array();
$date = new DateTime();
while (count($dates)<5)
{
    $date->add(new DateInterval('P1D'));
    if ($date->format('N')<6)
        $dates[]=$date->format('Y-m-d');
}
function getWeekdayDatesFrom($format, $start_date_epoch, $end_date_epoch, $range) {
    $dates_arr = array();
    if( ! $range) {
        $range = round(abs($start_date_epoch-$end_date_epoch)/86400) + 1;
    } else {
        $range = $range + 1; //end date inclusive
    }
    $current_date_epoch = $start_date_epoch;
    for($i = 1; $i <= $range; $i+1) {
        $d = date('N',  $current_date_epoch);
        if($d <= 5) { // not sat or sun
            $dates_arr[] = "'".date($format, $current_date_epoch)."'";
        }
        $next_day_epoch = strtotime('+'.$i.'day', $start_date_epoch);
        $i++;
        $current_date_epoch = $next_day_epoch;
    }
    return $dates_arr;
} 

这应该有效:

$dates = array();
$i = 0;
while(true) {
    $i++;
    $time = strtotime("+$i days");
    $dayOfWeek = date('w', $time);
    /* 'w' - day of week, numeric, i.e. "0" (Sunday) to "6" (Saturday) */
    if( ($dayOfWeek == 0) or ($dayOfWeek == 6) ) {
        continue;
    }
    $dates[] = date('Y-m-d', $time);
    if( count($dates) >= 5 ) {
        break;
    }
}

您可以这样做:

$now = time();
$day = 60*60*24;
$days = array();
for ($i=1; $i<=7; $i++){
    $ts = $now + $day*$i;
    if (date("N", $ts) < 6){
        $days[] = date("l jS", $ts);
    }
}

上述代码的输出为:

Array(
    [0] => Monday 1st
    [1] => Tuesday 2nd
    [2] => Wednesday 3rd
    [3] => Thursday 4th
    [4] => Friday 5th
)