がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

一ヶ月先ってなに?

んと…先日。こゆプログラムで「晦日付近になると一ヶ月先がちゃんと取れない〜」という質問を拝見しまして。

for($ip = 0; $ip < 12; $ip++ ){
  print date('Y/m/d', strtotime("+$ip months", time() ) ) . "\n";
}

えと。本日15日ですんで、ちょいと小細工をしてみます。

for($ip = 0; $ip < 12; $ip++ ){
  print date('Y/m/d', strtotime("+$ip months 16days ", time() ) ) . "\n";
}

結果は、こげなかんじ。

[gallu@localhost ~]$ php t.php
2009/12/01
2009/12/31
2010/01/31
2010/03/03
2010/03/31
2010/05/01
2010/05/31
2010/07/01
2010/07/31
2010/08/31
2010/10/01
2010/10/31

えとまぁ…当然っちゃぁ当然で。


システム的には、+nヶ月といわれたら、一端素直に「月数に加算」しまふ。
あえて書くなら

2009/11/31
2009/12/31
2010/01/31
2010/02/31
2010/03/31
2010/04/31
2010/05/31
2010/06/31
2010/07/31
2010/08/31
2010/09/31
2010/10/31

こげな感じ?
んで。「晦日が31ではない月」に対して、適切に修正を加えると…あら不思議(全然不思議ぢゃないし)。


そも。「一ヶ月後」ってナンでしょう? って話があって。
1月1日の一ヶ月後は2月1日です。
んぢゃ1月31日の一ヶ月後は? 2月28日(ないし閏年なら29日)?
んぢゃ2月28日の一ヶ月後は? より正確には。「1月31日の一ヶ月後の2月28日の一ヶ月後」と「1月28日の一ヶ月後の2月28日の一ヶ月後」はそれぞれおいくつですか?


一ヶ月後、って単語はおいちゃんが言うところの「便利な言葉 http://d.hatena.ne.jp/gallu/20090714/p2 」なので。
使う時は激しく気をつけて。かつ、システムにおいては可能な限り「使わないように」注意しませう。