[PHP-users 30105] Re: 任意の日付から経過した年月日を求めるには

個々一番 cocoiti @ comio.info
2006年 8月 21日 (月) 03:19:28 JST


個々一番です。

何がわからないのでしょうか?


最初に日付を出してしまうと、年や月を割り出すのに面倒ですので
(月には28、29、30、31の日数がありますし年にはうるう年があります。)

いろいろな考え方がありますが、以下のような考え方でもできると思います。

仮に、
2006年7月10日〜2006年8月11日
だった場合は、
2006年 - 2006年 = 0年
8月  - 7月 = 1ヶ月
11日 - 1日 = 1日
として、

0年1ヶ月1日となります。

2006年7月10日〜2006年8月09日
の場合は、

2006年 - 2006年 = 0年
8月  - 7月 = 1ヶ月
9日  - 11日 = -1日
となり、日がたりないので、
8月の日数を、日付に換算してやって補います。

40日 - 11 = 19日
となります。

最終的には年まで計算することになるでしょう。

日付・時刻関数やライブラリ周りは詳しくないので同じような関数があるかもし
れませんが、「月」の日数を計算するのは、大雑把に次のような関数とかを作っ
てやることになります。

(いろいろ適当ですので、概念の説明用程度におもってください。)

function getMonthDay($year, $month){
	$month_start = getdate(mktime(0, 0, 0, $month, 0, $year));
	$month_end = getdate(mktime(0, 0, 0, $month + 1, -1, $year));
	return $month_start['yday'] - $month_end['yday'];
}

ということで、ヒントになれば幸いです。

もしそのロジックが出来て、社会的な契約上、問題ないならそのロジックを
MLに投げるときっと、後の人が勉強になるかと思います。

/*************************************
*個々一番
*cocoiti @ comio.info
*************************************/



PHP-users メーリングリストの案内