電子書籍の厳選無料作品が豊富!

午前中に差分の日数を算出する方法は教えて頂けたのですが、
月数を算出する方法が分からなく困っています。

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の末日の差がある為)

どうすれば簡単に処理できるのでしょうか?
どなたかご教示下さい。
足りない情報がありましたら随時補足致します。

A 回答 (2件)

なるほど・・・


月の差だけ考えればよいなら単純に

<?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ヶ月になりますけどね。
    • good
    • 1
この回答へのお礼

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

お礼日時:2007/08/27 14:28

年月のみですか?


こんな感じでしょうか。

$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));

とりあえず全て月(整数)に変換して計算しています。

参考まで。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/08/27 14:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!