[PHP]strtotimeのnext month、+1 month には注意

ご、ごごごごご、ゴキブリがでたー!
でかいの!とりあえずゴキジェットって本当に殺せる(?)んですね。
ちっこいゴキブリっぽいの(ゴキブリかはわからない)のはいっぱい出てたけどでかいのでちゃった。これは間違いなくゴキブリだ。。。
バルサン的なのやっぱしないとなのかなあ。
アパート用のノンスモークな奴買ってはあるんですけどね。パソコンとか食器とかに袋被せないととか思うとめんどくさくて・・・。

ってことでこんにちは。ANDくんです。

PHPのstrtotimeっていう関数があります。
この関数は特定の日時から文字列としてつなげて +1 month とか next month とかしてあげると次の月を取得できたりするのですが、

次の月の1日を取得する例

date('Y-m-01',strtotime("2014-05-30"." next month"))
//2014-06-01

これだと問題無いのですが

date('Y-m-01',strtotime("2014-05-31"." next month"))
//2014-07-01

こうなると出力結果が7月となって返ってしまうんですよね。
なんか6月31日なんて無いから次の月に繰り上がってしまうようです。

それで今回は

date('Y-m-01',strtotime(date('Y-m-01',strtotime("2014-05-31"))." next month"))
//2014-06-01

とすることにしました。
なんか冗長っぽいですが、一度その月頭を取得してから次の月にすることで何とか対応。

よくあるバグっぽいですが、よくある事だからこそ周知されるべきですかね。
うーんでも、普通の感覚で5月31日に一ヶ月後って言われた場合・・・7月になるのが正しいといえば正しいのかな・・・?
次の月を出すわけではなく、一ヶ月後を出すということですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください