読者です 読者をやめる 読者になる 読者になる

Keep It Real BLOG

ソフトウェアエンジニア。1児の父。 酒、ラーメン、サッカー好き。旅行も好きですが、普段は出不精で大抵たまプラーザ界隈に居ます。

strtotimeを使わずに、1ヶ月とか足す方法

Web Web-PHP

strtotimeを使ってしまうと、月末に1ヶ月足したりすると、その翌月になってしまったりします。
ex:2012/01/31 + 1month ⇒ 2012/03/02

その時の為の関数が以下。メモ。

private function calc_date($year, $month, $day, $addMonths) {
	$month += $addMonths;
	$dt = mktime(0, 0, 0, $month + 1, 0, $year);
	$endDay = date("d", $dt);
	if($day > $endDay) $day = $endDay;
	$dt = mktime(0, 0, 0, $month, $day, $year);//正規化
	return date("Y-m-d", $dt);
}
echo calc_date(2012, 1, 31, 1);

結果として、2012/2/29が表示されます。