特定の日付から最後の平日を取得する最良の方法を探しています。私が使用している例は、クリスマスイブ (12 月 24 日) 前の最後の営業日です。
残念ながら、これは機能しません:
echo date('l jS \of F Y h:i:s A', strtotime('last weekday before 24th December 2012'));
削除するだけbefore
で、サンプルは正常に動作します (PHP 5.2.0 以降)。相対形式のドキュメントに従って、絶対日付部分 ( 24th December 2012
) が最初に処理され、次に相対部分 ( ) が処理されます。last weekday
オリジナル
last weekday before 24th December 2012
正しい
last weekday 24th December 2012
他の回答に従って、質問のように使用するprevious
とlast
、まったく同じように動作します。何かの直前の出来事(この場合は平日) を意味します。last
のスタイルで使用すると、別の特別な意味がありますlast dayname of
が、質問では使用されていません。
参照:
次のようなことを試しましたか:
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;