1

私はPHPで関数を作成しようとしていますが、日付によってはそれが得られます

今週(月日)20/8/12から26/8/12

次の週+1(月日)27/8/12から02/9/12

次の週+2(月日)03/9/12から09/9/12

次の週+3(月日)

次の週+4(月日)

次の週+5(月日)

以下を使ってみましたが、もっときれいなものはありますか?

$week0_mon = date("Y-m-d", strtotime(date("Y").'W'.date('W')."1"));
$week0_sun = date("Y-m-d", strtotime(date("Y").'W'.date('W')."7"));

$week1_mon = date("Y-m-d", strtotime(date("Y-m-d", strtotime($week0_mon)) . " +1 week"));
$week1_sun = date("Y-m-d", strtotime(date("Y-m-d", strtotime($week0_sun)) . " +1 week"));

echo $week0_mon.' to '.$week0_sun.'<br />';
echo $week1_mon.' to '.$week1_sun.'<br />';
4

3 に答える 3

1

たぶんこれはあなたの問題に答えるでしょう、それは前の月曜日を計算し、ここから始めて一度に1週間を追加します。編集するだけですfor

$dOffsets = array("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");
$prevMonday = mktime(0,0,0, date("m"), date("d")-array_search(date("l"),$dOffsets), date("Y"));
$oneWeek = 3600*24*7;$toSunday = 3600*24*6;

for ($i=0;$i<= 5;$i++)
{
    echo "Week +",$i," (mon-sun) ",
            date("d/m/Y",$prevMonday + $oneWeek*$i)," to ",
            date("d/m/Y",$prevMonday + $oneWeek*$i + $toSunday),"<br>";
}

これは私に与えます

Week +0 (mon-sun) 20/08/2012 to 26/08/2012
Week +1 (mon-sun) 27/08/2012 to 02/09/2012
Week +2 (mon-sun) 03/09/2012 to 09/09/2012
Week +3 (mon-sun) 10/09/2012 to 16/09/2012
Week +4 (mon-sun) 17/09/2012 to 23/09/2012
Week +5 (mon-sun) 24/09/2012 to 30/09/2012
于 2012-08-22T08:20:38.970 に答える
0

@ Wr1t3rの回答を調整して、次のように正しい日付範囲を指定しました。

function plus_week($addWeek=0){
    $last_monday_timestamp=strtotime('-'.(date('N')-1).' days');
    if($addWeek!=0){
        if($addWeek>0) $addWeek='+'.$addWeek;
        $last_monday_timestamp=strtotime($addWeek.' week', $last_monday_timestamp);
    }
    $end_week_timestamp = strtotime ('+6 days', $last_monday_timestamp);
    return date('d/m/y', $last_monday_timestamp).' to '.date('d/m/y', $end_week_timestamp);
}

date('N')は、平日の数値mon-sun(1-7)を与えるので、これから1を引くと、最後の月曜日に戻る日数がわかります。または、strtotime('先週の月曜日')を使用することもできます。ただし、この方法により、現在月曜日にいる場合は、先週の月曜日に戻らないようにできます。

月曜日=1so(1-1 = 0)-0日=今日
金曜日= 5 so(5-1 = 4)-4日=月曜日
SUNDAY = 7('w'を使用した場合は0ではありません)so(7-1 = 6)-6日=月曜日(明日ではない)

また、これを調整して、負の週数も実行します。

于 2012-08-22T08:24:32.730 に答える
-1

私はこのようにしました。それがまさにあなたが望むものであるかどうかはわかりません。

function plus_week($addWeek){
    $date = date("d.m.Y",time());
    $newdate = strtotime ( '+'.$addWeek.' week' , strtotime ( $date ) ) ;
    $newdate = date ( 'd/m/y' , $newdate );
    return $newdate;
}

for($i = 1; $i < 7; $i++){
    echo "Following week+".$i." ".plus_week($i)." to ".plus_week($i+1)."<br/>";
}

これからあなたはこのような答えを得るでしょう:

次の週+129/08/12から05/09/12

次の週+205/09/12から12/09/12

次の週+312/09/12から19/09/12

次の週+419/09/12から26/09/12

次の週+526/09/12から03/10/12

次の週+603/10/12から10/10/12

于 2012-08-22T08:02:51.993 に答える