PHP
datetime
PHP7

【PHP】時間を比較する際は気を付けましょうという話

コメント欄も見て


日付を比較する

単純にどちらかの日付が大きいかを比較する

比較する日付の例として2019年7月27日2019年12月27日を比較してみます


間違った日付比較

$firstDay  = (new DateTime())->format('Y-' . 7 . '-' . 27);

$secondDay = (new DateTime())->format('Y-' . 12 . '-' . 27);

var_dump($firstDay);
var_dump($secondDay);
var_dump($firstDay > $secondDay);

[Output for 7.2.13 | took 54 ms, 14.88 MiB]

string(9) "2019-7-27"
string(10) "2019-12-27"
bool(true)

なぜか$firstDay2019-7-27の方が大きいという判定がでる


正しく比較するには

一桁の数字には0埋めするようにしましょう。

$firstDay  = (new DateTime())->format('Y-' . str_pad(7, 2, 0, STR_PAD_LEFT) . '-' . 27);

$secondDay = (new DateTime())->format('Y-' . 12 . '-' . 27);

var_dump($firstDay);
var_dump($secondDay);
var_dump($firstDay > $secondDay);

↓結果

[Output for 7.2.13 | took 50 ms, 15.21 MiB]

string(10) "2019-07-27"
string(10) "2019-12-27"
bool(false)

必ずYYYY-mm-ddの形にしてから比較しましょうというお話でした。


おわり


  • 2時間くらいじかんかえして


参考リンク