9

特定の日付から最後の平日を取得する最良の方法を探しています。私が使用している例は、クリスマスイブ (12 月 24 日) 前の最後の営業日です。

残念ながら、これは機能しません:

echo date('l jS \of F Y h:i:s A', strtotime('last weekday before 24th December 2012'));
4

2 に答える 2

7

削除するだけbeforeで、サンプルは正常に動作します (PHP 5.2.0 以降)。相対形式のドキュメントに従って、絶対日付部分 ( 24th December 2012) が最初に処理され、次に相対部分 ( ) が処理されます。last weekday

オリジナル

last weekday before 24th December 2012

正しい

last weekday 24th December 2012

他の回答に従って、質問のように使用するpreviouslast、まったく同じように動作します。何かの直前の出来事(この場合は平日) を意味します。lastのスタイルで使用すると、別の特別な意味がありますlast dayname ofが、質問では使用されていません。

参照:

于 2012-12-19T20:12:11.363 に答える
1

次のようなことを試しましたか:

echo date('l jS \of F Y h:i:s A', strtotime('24th December 2012 previous weekday'));

これは、Friday 21st of December 2012 12:00:00 AM使用するようなものを出力しますPHP 5.3.19

これについて別の方法があります。これは最も美しい方法ではありませんが、機能するはずです。

$date = '24th December 2012';
$dateN = intval(date('N', strtotime($date)));

if ($dateN === 1) {
    $prevWeekday = date('l jS \of F Y h:i:s A', strtotime($date . '-3 days'));
} else if ($dateN === 7) {
    $prevWeekday = date('l jS \of F Y h:i:s A', strtotime($date . '-2 day'));
} else {
    $prevWeekday = date('l jS \of F Y h:i:s A', strtotime($date . '-1 day'));
}

echo $prevWeekday;
于 2012-12-19T19:59:07.413 に答える