• ベストアンサー

差分の月数を算出する方法

午前中に差分の日数を算出する方法は教えて頂けたのですが、 月数を算出する方法が分からなく困っています。 2007/08/27 13:00 2007/07/31 00:00 この時、差分は1ヶ月としたいです。 日数は考慮せず、あくまで年月のみで算出を行いたいです。 但し、1ヶ月はその年月の末日と同値です。 今やってる処理はこんな感じです。 $now = mktime(0, 0, 0, $now["tm_mon"], 1, $now["tm_year"]); $paradate = mktime(0, 0, 0, $paradate["tm_mon"], 1, $paradate["tm_year"]); $diff = strtotime($now) - strtotime($paradate); ここまではいいと思うのですが、次に以下のような処理を行っています。 (途中まで書いて、だめじゃんと思った状態) $select = $diff / (60 * 60 * 24); ここで何をやりたいかと言うと、何ヶ月の差分があったかを求めたいのです。 しかし、タイムスタンプの差分を求めた日付(ここでは$paradate)が何月で、末日が 何日だからその分を差し引く、その次の月の末日が何日だからその分を 差し引く~・・・ としていかないと正しい差分が求められないと思うのです。 (28, 29, 30, 31の末日の差がある為) どうすれば簡単に処理できるのでしょうか? どなたかご教示下さい。 足りない情報がありましたら随時補足致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

なるほど・・・ 月の差だけ考えればよいなら単純に <?PHP $str1="2007/08/27 13:00"; $str2="2007/07/31 00:00"; $date1=strtotime($str1); $date2=strtotime($str2); $month1=date("Y",$date1)*12+date("m",$date1); $month2=date("Y",$date2)*12+date("m",$date2); $diff = $month1 - $month2; print $diff; ?> もちろん、7/31~8/1でも1ヶ月になりますけどね。

naktak
質問者

お礼

おお!すごい、ありがとうございます。 感動しますこれ(笑)

その他の回答 (1)

回答No.2

年月のみですか? こんな感じでしょうか。 $t1 = mktime(0,0,0,$m1,1,$Y1); $t2 = mktime(0,0,0,$m2,1,$Y2); $dm = ( date("Y", $t2) - date("Y",$t1) ) *12 + ( date("n",$t2) - date("n",$t1)); とりあえず全て月(整数)に変換して計算しています。 参考まで。

naktak
質問者

お礼

ありがとうございます!先に進めそうです!