4

重複の可能性:
PHP で週の最初の曜日を取得しますか?

日付が指定されたら、その週の月曜日の日付を取得する必要があります。

2012-08-08 を指定すると、2012-08-06 が返されます。

4

2 に答える 2

10
function last_monday($date) {
    if (!is_numeric($date))
        $date = strtotime($date);
    if (date('w', $date) == 1)
        return $date;
    else
        return strtotime(
            'last monday',
             $date
        );
}

echo date('m/d/y', last_monday('8/14/2012')); // 8/13/2012 (tuesday gives us the previous monday)
echo date('m/d/y', last_monday('8/13/2012')); // 8/13/2012 (monday throws back that day)
echo date('m/d/y', last_monday('8/12/2012')); // 8/06/2012 (sunday goes to previous week)

試してみてください: http://codepad.org/rDAI4Scr

... または、日曜日が前の週ではなく翌日 (月曜日) に返されるバリエーションの場合は、次の行を追加するだけです。

 elseif (date('w', $date) == 0)
    return strtotime(
        'next monday',
         $date
    );

試してみてください: http://codepad.org/S2NhrU2Z

タイムスタンプまたは文字列を渡すことができ、タイムスタンプが返されます

ドキュメンテーション

于 2012-08-02T04:42:37.247 に答える
2

関数を使用してタイムスタンプを簡単に作成できますstrtotime。「先週の月曜日」などのフレーズと、使用している日付から簡単に作成できるタイムスタンプであるセカンダリ パラメータの両方を受け入れますmktime(特定の日付の入力に注意してください)。ですHour,Minute,Second,Month,Day,Year)。

<?php
    $monday=strtotime("monday this week", mktime(0,0,0, 8, 8, 2012));
    echo date("Y-m-d",$monday);
    // Output: 2012-08-06
?>

編集により「先週の月曜日」がstrtotime「今週の月曜日」に変更され、完全に機能するようになりました。

于 2012-08-02T04:37:25.490 に答える