1

次の5営業日(今日を除く月曜日から金曜日)の配列を作成しようとしています。週の労働時間は世界中で異なることは知っていますが、これは私がやろうとしていることにとって重要ではありません.

たとえば、今日が水曜日の場合、今週の木曜日と金曜日、および次の週の月曜日、火曜日、水曜日の日付が必要です。

私はこれがうまくいくと思った:

$dates = array();

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

しかし、今日、それは私に与えています:

  • 月曜日 1日
  • 2日火曜日
  • 3日水曜日
  • 4日木曜日
  • 7日日曜日!

アドバイスをいただければ幸いです。

ありがとう

4

4 に答える 4

8

これを試して

$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');
}
于 2013-06-28T10:14:29.803 に答える
1
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;
} 
于 2013-11-18T19:00:58.733 に答える
0

これはうまくいくはずです:

$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;
    }
}
于 2013-06-28T10:15:49.767 に答える