期間計算.fmj Tips

作成日時 :6/21/99 19:00 
 期間計算の方法にはいろいろなやり方(例外が多い)があるようです。あなたが求めている期間計算の方法と、私がここで紹介している期間計算の方法とが必ずしも合致するとは限りません。このテンプレートを利用される場合は十分注意してご利用願います。また、本テンプレートの使用によって被ったどのような損害に対しても私は一切の責任を負いませんのであらかじめご了承願います。

1. 期間計算.fmjの使い方

●期間計算.fmjの概要説明

期間計算.fmjは、起算日と満期日を入力することで経過した年、月、日をそれぞれ算出できます。計算方法は民法の 年、月、日を単位とする期間計算(歴法的計算法)に則っています。
  1. 起算日と満期日を入力します。(起算日>=満期日の関係で)
  2. 経過した年、月、日をそれぞれ自動算出します。

 

2. 年、月、日を単位とする期間計算の仕方

●年、月、日を単位とする期間計算の考え方

 民法の 年、月、日を単位とする期間計算法(歴法的計算法)が規定されています。その方法に則り算出することとします。
  1. 経過カ年の考え方

    経過年とは、起算点が00:00:00を過ぎて始まる場合を想定して算出しています。つまり、当該日は算入せず、翌日が起算日としています。

    例えば、
    1999年1月1日の起算日は1999年1月2日となります。結果、満了点(満期日)は2000年1月1日24:00:00としています。また、最後の月にその起算日に応答する日が無い場合は、その月の末日をもって満期日としています。(月に大小、年の平、閏は無視する)

    1年間とは
    経過1カ年
    経過4カ年
    起算点(日)
    満了点
    満期日
    満期日
    1999年1月1日
    00:00:00
     
    1999年12月31日
    24:00:00
     
    2000年1月1日

    2003年1月1日
     
    1999年2月28日
    00:00:00
     
    2000年2月27日
    24:00:00

    2000年2月28日

    2003年2月28日
     
    2000年2月28日
    00:00:00

    2001年2月28日
    24:00:00
     
    2001年2月28日
     
    2004年2月28日

    2000年2月29日
    00:00:00

    2001年2月28日
    24:00:00
     
    2001年2月28日
     
    2004年2月29日

    1999年3月1日
    00:00:00
     
    2000年2月29日
    24:00:00

    2000年3月1日

    2003年3月1日
     
    2000年3月1日
    00:00:00

    2001年2月28日
    24:00:00
     
    2001年3月1日
     
    2004年3月1日

    1999年4月1日
    00:00:00
     
    2000年3月31日
    24:00:00

    2000年4月1日

    2003年4月1日
     
    1999年5月1日
    00:00:00
     
    2000年4月30日
    24:00:00

    2000年5月1日

    2003年5月1日
     

    ※満期日は起算点が午前0時(00:00:00)を過ぎて始まるものとして算出してあります。「初日不算入の原則」  

  2. 経過カ月の考え方

    経過カ月とは、経過カ年と同じように起算点が00:00:00を過ぎて始まる場合を想定して算出しています。つまり、当該日は算入せず、翌日が起算日としています。

    例えば、
    1999年1月1日の起算日は1999年1月2日となります。結果、満了点(満期日)は2000年2月1日24:00:00としています。

    また、最後の月にその起算日に応答する日が無い場合は、その月の末日をもって満期日としています。(月に大小、年の平、閏は無視する)

    1カ月間とは
    経過1カ月
    経過5カ月
    起算点(日)
    満了点
    満期日
    満期日
    1999年1月1日
    00:00:00
     
    1999年1月31日
    24:00:00
     
    1999年2月1日
     
    1999年6月1日
     
    1999年1月29日
    00:00:00
     
    1999年2月28日
    24:00:00
     
    1999年2月28日
     
    1999年6月29日
     
    1999年1月30日
    00:00:00
     
    1999年2月28日
    24:00:00
     
    1999年2月28日
     
    1999年6月30日
     
    1999年1月31日
    00:00:00
     
    1999年2月28日
    24:00:00
     
    1999年2月28日
     
    1999年6月30日
     
    1999年2月28日
    00:00:00
     
    1999年2月27日
    24:00:00

    1999年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)を過ぎて始まるものとして算出してあります。「初日不算入の原則」  

  3. 経過日の考え方。

    経過日とは、経過カ年と同じように起算点が00:00:00を過ぎて始まる場合を想定して算出しています。つまり、当該日は算入せず、翌日が起算日としています。

    例えば、
    1999年1月1日の起算日は1999年1月2日となります。結果、満期日が2000年1月8日24:00:00の場合、経過日7日はとしています。
    また、起算日と満期日が月をまたいだ場合は経過年、経過月を差し引いた日数を経過日としています。

    つまり、満期日に一番近い応答日からの経過日数が経過日となります。さらに、応答日が無い場合は、その月の末日をもって応答日としています。
    応答日と満期日が等しい場合は経過日が0日になります。

    日数とは
    経過日
    起算点(日)
    満了点
    満期日
    (応答日)
    (経過カ月) 経過日
    1999年1月1日
    00:00:00
     
    1999年1月1日
    24:00:00
     
    1999年1月1日
    (1999年1月1日)
    (0カ月+) 0日
    1999年1月1日
    00:00:00
     
    1999年1月31日
    24:00:00
     
    1999年1月31日
    (1999年1月1日)
    (0カ月+)30日
    1999年1月1日
    00:00:00
     
    1999年2月1日
    24:00:00
     
    1999年2月1日
    (1999年2月1日)
    (1カ月+) 0日
    1999年1月1日
    00:00:00
     
    1999年2月28日
    24:00:00
     
    1999年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:00
     
    1999年2月28日
    24:00:00
     
    1999年2月28日
    (1999年2月27日)
    (0カ月+)1日
    1999年1月28日
    00:00:00
     
    1999年2月28日
    24:00:00
     
    1999年2月28日
    (1999年2月28日)
    (1カ月+) 0日
    1999年1月30日
    00:00:00
     
    1999年2月28日
    24:00:00
     
    1999年2月28日
    (1999年2月28日)
    (1カ月+) 0日
    1999年1月31日
    00:00:00
     
    1999年2月28日
    24:00:00
     
    1999年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:00
     
    1999年3月1日
    24:00:00
     
    1999年3月1日
    (1999年2月28日)
    (1カ月+) 1日
    1999年1月31日
    00:00:00
     
    1999年4月30日
    24:00:00
     
    1999年4月30日
    (1999年4月30日)
    (3カ月+) 0日
    1999年1月31日
    00:00:00
     
    1999年5月1日
    24:00:00
     
    1999年5月1日
    (1999年4月30日)
    (3カ月+) 1日

 

3. 算出の説明

●応答日の算出

  1. 次式により、

    If(

    Day(起算日) <= Day(満期日) or (末日情報 = "11") or (末日情報 = "01" and Day(満期日) < Day(起算日)),

    Date(Month(満期日) - 0, Day(起算日), Year(満期日)),

    Date(Month(満期日) - 1, Day(起算日), Year(満期日))

    )


  2. 起算日の日と満期日の日を比較し、起算日の日が小さい時、末日情報が"11"、末日情報が"01"かつ起算日の日と満期日の日を比較し、起算日の日が大きい場合は、満期日の年、月に起算日の日を使った日付を返します。
  3. 起算日に対応する応答日がある場合は 1. の結果をそのまま応答日として返します、応答日がない時は、1. の結果をの月の前月の末日を応答日として返します。

●経過年数の算出

  1. 次式により、

    Year(応答日) - Year(起算日) - (Month(応答日) < Month(起算日))


    起算日から応答日までの経過年数を返します。

●経過月数の算出

  1. 次式により、

    Case(

    Month(起算日) < Month(応答日) ,

    Month(応答日) - Month(起算日) - ((Day(応答日) < Day(起算日)) and (応答日情報 = 1)),

    Month(起算日) > Month(応答日) ,

    12 - Month(起算日) + Month(応答日) - ((Day(応答日) < Day(起算日)) and (応答日情報 = 1)),0

    )

    経過カ月を返します。

 

●経過日数の算出

  1. 次式により、

    満期日 - 応答日


    満期日に内輪で一番近い応答日からの日数を返します。

 

●末日情報の算出

  1. 次式により、

    (Day(Date(Month(起算日) +1, 0, Year(起算日))) = Day(起算日)) &

    (Day(Date(Month(満期日) +1, 0, Year(満期日))) = Day(満期日))


    起算日の日が末日の場合は1、満期日の日が末日の場合は1をそれぞれ返します。それらの値は文字連結され 例 11のようになります。

    それ以外の日は全て0を返します。

4. ミニテンプレートのダウンロード

期間計算.fmjのダウンロードはこちらへ!

 

5. ご質問等は

大分時間を掛けて見直したつもりですが、記載内容に間違いがございましたら是非御一報願います。

kipwmiのファイルメーカー会議室へお気軽にどうぞ!


作者:村山清隆 E-mail:murayama@kipwmi.com URL:http://www.kipwmi.com/

ご意見、ご質問、ご依頼など どうぞお気軽にメールして下さい。 info@kipwmi.com