0

来週表示したいのですが、木曜日の 13:00 以降であれば、+2 週間 (翌週) を返す必要があります。週末でない場合、このコードは正常に機能します。金曜日の後の開始日が間違っています。これは何が原因ですか?

$current_time = strtotime('now');

if ($current_time < strtotime('thursday this week 13:00')) {
    $week_start = date('d/m/Y', strtotime('this week next monday', strtotime(date('d-m-Y'))));
    $week_end = date('d/m/Y', strtotime('next week next sunday', strtotime(date('d-m-Y'))));
} else {
    if (date('N') > 5) {
        $week_start = date('d/m/Y', strtotime('+2 week next monday', strtotime(date('d-m-Y'))));
    } else {
        $week_start = date('d/m/Y', strtotime('next week next monday', strtotime(date('d-m-Y'))));
    }

    $week_end = date('d/m/Y', strtotime('+2 week next sunday', strtotime(date('d-m-Y')))); 
} 

return $week_start." - ".$week_end;
4

1 に答える 1

1

日付が木曜日の 13:00 の前後にあることのみをテストしていると言っている場合でも、if ステートメントには 3 つの括弧があります。

+2 week next mondayであるべきだと思われますがnext week next monday、読み取る行next week next mondayはおそらく実行されません。

コードは次のように簡略化することもできます。

if ($current_time < strtotime('thursday this week 13:00')){
    $week_start = strtotime('monday next week');
}else{
    $week_start = strtotime('monday +1 week');
}

$week_end = strtotime('next sunday', $week_start);

return date("Y/m/d", $week_start)." - ".date("Y/m/d", $week_end); 
于 2013-02-04T08:56:31.670 に答える