2017-09-13 10 views
0

誰かがこれをfalseに戻す方法を知っていますか?strtotime( "5th monday september 2017")は "2017年2月10日"を返しますか?

あり9月には第五月曜日はありませんので、この関数は返す:2017年10月2日

date("jS F, Y", strtotime("fifth monday september 2017")); 
+4

リビングのアート。返された日付の月があなたが探している月と同じかどうかを確認する別のチェックを追加します。 – aynber

+4

私は、9月の最初の月曜日から5日目の月曜日です...偽を返すよりもうまくいくようです:)月が同じかどうかfnチェックを行うことができます... –

+0

可能な複製のhttps:// stackoverflow .com/questions/4150435/php-strtotime-last-monday-if-today-is-monday?rq = 1 - 同じ考えがあります。 –

答えて

2

PHPのstrtotime GNUの日付の解析C関数に基づいている(IIRC、それは実際にこのC関数を呼び出す代わりに、そのを使用して独自の実装)。

曜日の明示的な言及は、将来的にその曜日に到達するために(必要な場合のみ)日付を転送します...数は曜日に先行する:GNU documentationから前の補足週に移動する項目。

したがって、入力した例でstrtotimeから直接間違った結果を得ることはありません。最大の秒から、一時的な計測の

当社単位:いくつかの視点を加えることも

$timestamp = strtotime("fifth monday september 2017"); 
$month = date('n', strtotime("september 1, 2017")); 
$same_month = (date('n', $timestamp) === $month); 

from the GNU documentation、:あなたが結果は同じ月であることを確認したい場合は、あなたのような何かを行うことができます私たちが大胆に、あるいは少なくともレベルを上回る経験に直面することを可能にする、より成功した言語と科学のパターンとは違って、私たちは時の計算のシステムは黙って、永続的に私達の時間の恐怖を奨励します...私たちはしばしば、直近の過去または未来、最後の火曜日または日曜日から1週間、無力な混乱の気持ちを持っています。

- ロバートGrudin、時間とfalseを返すことはないだろう

関連する問題