投稿日:

便利に使えるdate関数

「10日後の日付を求めたい」「来月の最後の日付を求めたい」「日付の曜日を求めたい」・・
PHPを実務で使い始めて1年の間、date関数に馴染んでなかった僕としては、こんなことですごく困ったものでした。
今日の日付の取得はさすがにわかったのですが、そこから10日後を求めようとすると、月によって次月になる日が変わる。結構書かないといけないな。。と思っていたら先輩から「date使ったら一発ですよ」と言われ、そんな簡単にできてしまうのか、、とびっくりしました。
今回はそんなときに使った便利なdate関数について、忘備録としてまとめておきたいと思います。

date('Y-m-d H:i:s') //現在時刻
date('Y-m-d', strtotime("tomorrow")) // 明日
date('Y-m-d', strtotime("+ 10 day")) // 10日後
date('Y-m-d', strtotime("+ 2 weeks")) // 2週間後
date('Y-m-d', strtotime("- 1 month")) // 一ヶ月前
date('Y-m-d', strtotime("first day of - 1 month")) // 先月の最初の日
date('Y-m-d', strtotime("last day of next month")) // 来月の最後の日
date('Y-m-d H:i:s', strtotime("yesterday 15:00:00")) //昨日の15時0分0秒
date("Y-m-d",strtotime("last Sunday")) // 一番最近の日曜日

ここで勉強になったことを2点書いておきます。
last day of の指定は非常に便利で、strtotime(“2013-08-31 +1 month”)だと、2013/10/01になってしまうが、strtotime( “last day of 2013-08 +1 month” )と書くと2013/09/30と次の月の最終日になるみたいです。

date('Y-m-d', strtotime("2013-08-31 +1 month")) // 結果⇒2013/10/01
date('Y-m-d', strtotime("last day of 2013-08 +1 month")) // 結果⇒2013/09/30

strtotimeに「tomorrow」をしてした場合は明日の0時0分0秒に、「+ 1 day」を指定した場合は、明日のちょうど24時間後の時間になるみたいです。strtotime(“tomorrow”)=strtotime(“+ 1 day”)ではないので注意とのことでした。

date('Y-m-d H:i:s', strtotime("tomorrow")) // 明日の0時0分0秒
date('Y-m-d H:i:s', strtotime("+ 1 day")) // 24時間後の日時

(参考) http://kihon-no-ki.com/php-use-date-and-strtotime