phpでプログラミングする際に、http://www.php.net/manual/だとか、インターネット上のさまざまな情報をイチイチ検索しながらやっています。
イチイチ検索する主な理由は、関数パラメータの順番が直感的には分からないためです。
strposやstr_replaceなんかは良く使うのに毎回調べています。
しかもこれらについては関数名にアンダーバーがあるのかないのかも、いつまでたっても覚えられません。
そしてDateTime。の、特にmodify。
DateTime::modify
”日付/時刻 文字列。有効な書式については 日付と時刻の書式 で説明しています。”
とのことで、引数にさまざまなパラメータを”文字列”で指定することで、便利な計算がいろいろできます。
相対的な書式
さらっと読んでも直感的には分かりにくいので、やっぱりググって、コチラのサイトなどを参考にさせていただくことになるのですが。
よく使うのが、
・当月の末日 : ’last day of this months’
・翌月の1日 : ’first day of next months’
・第一月曜日 : ’first day of this months’ ‘monday’
・・・なんだ事足りるじゃないか。
コードスニペットに出てこないのでやっぱりイチイチ調べる羽目になるわけですが。
modifyとは別にaddというメソッドもあります。
DateTime::add
加算減算するには引数にDateIntervalクラスのインスタンスを渡すのです。
そして、インスタンスを生成するためには例によって、時間間隔を表す文字列を渡すのです。
ドキュメントに挙がっている例としては
”$interval = new DateInterval(‘P2Y4DT6H8M’);”
・・・いやもう、これは覚える気がおこりませんよ・・・いちいちググって考えるのも・・・
DateTime::diffの結果としてIntervalクラスが返されるのですが、それをそのまま別の日付にaddするような、自分でインターバルを操作しなくていい用途であれば使いたい感じです。
単純な日付の加算減算はmodifyが圧倒的に使いやすいでしょう。
よく使うものはサブクラスでメソッド化し、スニペットで入力できるようにすれば幸せになれそうです。