期間計算の方法にはいろいろなやり方(例外が多い)があるようです。あなたが求めている期間計算の方法と、私がここで紹介している期間計算の方法とが必ずしも合致するとは限りません。このテンプレートを利用される場合は十分注意してご利用願います。また、本テンプレートの使用によって被ったどのような損害に対しても私は一切の責任を負いませんのであらかじめご了承願います。
●期間計算.fmjの概要説明
期間計算.fmjは、起算日と満期日を入力することで経過した年、月、日をそれぞれ算出できます。計算方法は民法の 年、月、日を単位とする期間計算(歴法的計算法)に則っています。
- 起算日と満期日を入力します。(起算日>=満期日の関係で)
- 経過した年、月、日をそれぞれ自動算出します。
●年、月、日を単位とする期間計算の考え方
民法の 年、月、日を単位とする期間計算法(歴法的計算法)が規定されています。その方法に則り算出することとします。
- 経過カ年の考え方
経過年とは、起算点が00:00:00を過ぎて始まる場合を想定して算出しています。つまり、当該日は算入せず、翌日が起算日としています。
例えば、
1999年1月1日の起算日は1999年1月2日となります。結果、満了点(満期日)は2000年1月1日24:00:00としています。また、最後の月にその起算日に応答する日が無い場合は、その月の末日をもって満期日としています。(月に大小、年の平、閏は無視する)
1年間とは 経過1カ年 経過4カ年 起算点(日) 満了点 満期日 満期日 1999年1月1日
00:00:001999年12月31日
24:00:002000年1月1日 閏
年2003年1月1日 1999年2月28日
00:00:002000年2月27日
24:00:00閏
年2000年2月28日 閏
年2003年2月28日 2000年2月28日
00:00:00閏
年2001年2月28日
24:00:002001年2月28日 2004年2月28日 閏
年2000年2月29日
00:00:00閏
年2001年2月28日
24:00:002001年2月28日 2004年2月29日 閏
年1999年3月1日
00:00:002000年2月29日
24:00:00閏
年2000年3月1日 閏
年2003年3月1日 2000年3月1日
00:00:00閏
年2001年2月28日
24:00:002001年3月1日 2004年3月1日 閏
年1999年4月1日
00:00:002000年3月31日
24:00:00閏
年2000年4月1日 閏
年2003年4月1日 1999年5月1日
00:00:002000年4月30日
24:00:00閏
年2000年5月1日 閏
年2003年5月1日
※満期日は起算点が午前0時(00:00:00)を過ぎて始まるものとして算出してあります。「初日不算入の原則」
- 経過カ月の考え方
経過カ月とは、経過カ年と同じように起算点が00:00:00を過ぎて始まる場合を想定して算出しています。つまり、当該日は算入せず、翌日が起算日としています。
例えば、
1999年1月1日の起算日は1999年1月2日となります。結果、満了点(満期日)は2000年2月1日24:00:00としています。
また、最後の月にその起算日に応答する日が無い場合は、その月の末日をもって満期日としています。(月に大小、年の平、閏は無視する)
1カ月間とは 経過1カ月 経過5カ月 起算点(日) 満了点 満期日 満期日 1999年1月1日
00:00:001999年1月31日
24:00:001999年2月1日 1999年6月1日 1999年1月29日
00:00:001999年2月28日
24:00:001999年2月28日 1999年6月29日 1999年1月30日
00:00:001999年2月28日
24:00:001999年2月28日 1999年6月30日 1999年1月31日
00:00:001999年2月28日
24:00:001999年2月28日 1999年6月30日 1999年2月28日
00:00:001999年2月27日
24:00:001999年3月28日 1999年7月28日 2000年2月28日
00:00:00閏
年2000年2月27日
24:00:00閏
年2000年3月28日 閏
年2000年7月28日 閏
年2000年2月29日
00:00:00閏
年2000年2月28日
24:00:00閏
年2000年3月29日 閏
年2000年7月29日 閏
年
※満期日は起算点が午前0時(00:00:00)を過ぎて始まるものとして算出してあります。「初日不算入の原則」
- 経過日の考え方。
経過日とは、経過カ年と同じように起算点が00:00:00を過ぎて始まる場合を想定して算出しています。つまり、当該日は算入せず、翌日が起算日としています。
例えば、
1999年1月1日の起算日は1999年1月2日となります。結果、満期日が2000年1月8日24:00:00の場合、経過日7日はとしています。
また、起算日と満期日が月をまたいだ場合は経過年、経過月を差し引いた日数を経過日としています。
つまり、満期日に一番近い応答日からの経過日数が経過日となります。さらに、応答日が無い場合は、その月の末日をもって応答日としています。
応答日と満期日が等しい場合は経過日が0日になります。
日数とは 経過日 起算点(日) 満了点 満期日 (応答日) (経過カ月) 経過日 1999年1月1日
00:00:001999年1月1日
24:00:001999年1月1日 (1999年1月1日) (0カ月+) 0日 1999年1月1日
00:00:001999年1月31日
24:00:001999年1月31日 (1999年1月1日) (0カ月+)30日 1999年1月1日
00:00:001999年2月1日
24:00:001999年2月1日 (1999年2月1日) (1カ月+) 0日 1999年1月1日
00:00:001999年2月28日
24:00:001999年2月28日 (1999年2月1日) (1カ月+)27日 2000年1月1日
00:00:00閏
年2000年2月29日
24:00:00閏
年2000年2月29日 (2000年2月1日) (1カ月+)28日 1999年1月27日
00:00:001999年2月28日
24:00:001999年2月28日 (1999年2月27日) (0カ月+)1日 1999年1月28日
00:00:001999年2月28日
24:00:001999年2月28日 (1999年2月28日) (1カ月+) 0日 1999年1月30日
00:00:001999年2月28日
24:00:001999年2月28日 (1999年2月28日) (1カ月+) 0日 1999年1月31日
00:00:001999年2月28日
24:00:001999年2月28日 (1999年2月28日) (1カ月+) 0日 2000年1月31日
00:00:00閏
年2000年2月29日
24:00:00閏
年2000年2月28日 (2000年2月29日) (1カ月+) 0日 1999年1月31日
00:00:001999年3月1日
24:00:001999年3月1日 (1999年2月28日) (1カ月+) 1日 1999年1月31日
00:00:001999年4月30日
24:00:001999年4月30日 (1999年4月30日) (3カ月+) 0日 1999年1月31日
00:00:001999年5月1日
24:00:001999年5月1日 (1999年4月30日) (3カ月+) 1日
●応答日の算出
- 次式により、
If(
Day(起算日) <= Day(満期日) or (末日情報 = "11") or (末日情報 = "01" and Day(満期日) < Day(起算日)),
Date(Month(満期日) - 0, Day(起算日), Year(満期日)),
Date(Month(満期日) - 1, Day(起算日), Year(満期日))
)
- 起算日の日と満期日の日を比較し、起算日の日が小さい時、末日情報が"11"、末日情報が"01"かつ起算日の日と満期日の日を比較し、起算日の日が大きい場合は、満期日の年、月に起算日の日を使った日付を返します。
- 起算日に対応する応答日がある場合は 1. の結果をそのまま応答日として返します、応答日がない時は、1. の結果をの月の前月の末日を応答日として返します。
●経過年数の算出
- 次式により、
Year(応答日) - Year(起算日) - (Month(応答日) < Month(起算日))
起算日から応答日までの経過年数を返します。
●経過月数の算出
- 次式により、
Case(
Month(起算日) < Month(応答日) ,
Month(応答日) - Month(起算日) - ((Day(応答日) < Day(起算日)) and (応答日情報 = 1)),
Month(起算日) > Month(応答日) ,
12 - Month(起算日) + Month(応答日) - ((Day(応答日) < Day(起算日)) and (応答日情報 = 1)),0
)
経過カ月を返します。
●経過日数の算出
- 次式により、
満期日 - 応答日
満期日に内輪で一番近い応答日からの日数を返します。
●末日情報の算出
- 次式により、
(Day(Date(Month(起算日) +1, 0, Year(起算日))) = Day(起算日)) &
(Day(Date(Month(満期日) +1, 0, Year(満期日))) = Day(満期日))
起算日の日が末日の場合は1、満期日の日が末日の場合は1をそれぞれ返します。それらの値は文字連結され 例 11のようになります。
それ以外の日は全て0を返します。
期間計算.fmjのダウンロードはこちらへ!
大分時間を掛けて見直したつもりですが、記載内容に間違いがございましたら是非御一報願います。