PHPの日付判定について考える(2)
日付の出力
現在の日付表示用
$now = date("Y-m-d H:i:s");
現在のタイムスタンプ
$time = time();
日付の比較
比較の式はtimestampならすぐに理解できた。
ただの数字なので、とても比較としてはわかりやすい。
if ( $time >= strtotime('2014-06-02') ) {
// 2014年6月2日以降
} else {// 2014年6月2日より前
}
日付の比較(指定日からある時間後の比較)
ある特定の時間から2時間前を比較(ここで悩んだ。)
strtotimeの使い方の実例にないから困った
単純に文字列としてはいっていればよかったっぽい。
strtotime('2014-06-02 12:00:00 +1 day');
その他試してみた
date('Y-m-d H:i:s', strtotime('2014-06-02 12:35:59 +1 day')); // 相対指定(後)
date('Y-m-d H:i:s', strtotime('+1 day 2014-06-02 12:35:59')); // 相対指定(前)
date('Y-m-d H:i:s', strtotime('2014-06-02 +1 day 12:35:59')); // 相対指定(中)
date('Y-m-d H:i:s', strtotime('2014-06-02 12:35:59 +27 hour')); // 24時間以上
date('Y-m-d H:i:s', strtotime('2014-06-02 12:35 +27 hour')); // 分まで
date('Y-m-d H:i:s', strtotime('2014-06-02 12 +27 hour')); // 時間まで
date('Y-m-d H:i:s', strtotime('2014-06-02 +27 hour')); // 日付まで
date('Y-m-d H:i:s', strtotime('2014-06 +27 hour')); // 月まで
date('Y-m-d H:i:s', strtotime('2014 +27 hour')); // 年だけ
date('Y-m-d H:i:s', strtotime('2014-06-31')); // 存在しない日付
出力結果
2014-06-03 12:35:59 // 相対指定(後)
2014-06-03 12:35:59 // 相対指定(前)(まぁ、できますね)
2014-06-03 12:35:59 // 相対指定(中)(え!できるんだ。)
2014-06-03 15:35:59 // 24時間以上(24以上でも問題ない)
2014-06-03 15:35:00 // 分まで(秒を消しても動作する)
1970-01-01 09:00:00 // 時間まで(さすがにエラーだ。)
2014-06-03 03:00:00 // 日付まで(時刻は00:00:00扱いだ)
2014-06-02 03:00:00 // 月まで(日付は1日と判断されてるっぽい)
2014-06-03 23:14:00 // 年だけ(月日と時刻は実行した時間が入る)
2014-07-01 00:00:00 // 存在しない日付(ある意味ちゃんと指定した日付だ)
秒だけ省略しても入らないのが、気になるけどいろいろあることに気がつきました。
こうやって冷静にまとめると、むずかしくなかったんだと感じます。
だだ、詰まった要因は他にもあるのでまた今度書きたいと思います。