
日付を扱うにあたって今までdateとかstrtotimeとか使ってましたけど、
DateTimeクラスを使うのが良いよって事で、基本的に何ができるのか
ふんわーりと調べてみました。
今日の日時と日付の追加
DateTimeはクラスなのでクラスが良く分からない人は
@yandod先生のクラスの教室を見てもらうといいかもしれません。
一応クラスの教材を前の記事で紹介してます。無料です。
1 2 | $createday = new DateTime(); $createday ->setDate(2014,7,15)->setTime(0,10,30); |
new DateTimeした時に何も渡さないと今日の情報が行きます。
setDateメソッドで日付を渡すとその日付の情報がオブジェクトに反映されます。
setTimeは時間の情報です。
出力する時はこうします。
1 2 | var_dump( $createday ->format( 'Y-m-d H:i:s' )); var_dump( $createday ->format( 'U' )); |
この辺はdate()と一緒な感じがしました。
オブジェクト内の日付の変更
modifyメソッドを使えばオブジェクト無いの日付を進めたり、
戻したりとかできます。こんな感じです。
1 2 3 4 5 | $createday = new DateTime(); $after3month = $createday ->modify( '+3 month' )->format( 'Y-m-d H:i:s' ); var_dump( $after3month ); $today = $createday ->modify( '-3 month' ); var_dump( $today ); |
日付オブジェクト同士の差を計算する
何日経過したかを計算するのにdiffメソッドっていうのがあります。
二つ日付オブジェクトを作って、作った日付オブジェクトの差を計算します。
1 2 3 4 5 6 7 | $today = new DateTime(); $after3month = new DateTime( '+3 month' ); var_dump( $today ->diff( $after3month )->format( '%R%mヶ月%d日 後' )); var_dump( $today ->diff( $after3month )->format( '%R%a日 後' )); $before3month = new DateTime( '-3 month' ); var_dump( $today ->diff( $before3month )->format( '%R%mヶ月%d日 前' )); var_dump( $today ->diff( $before3month )->format( '%R%a日 前' )); |
こんな感じで非常に便利なので、phpが5.2以上なら使ってみて下さい。
Windows版PHP 5.3.2だとdiff()が常に6015を返すバグがあるみたいです。