以下の関数を使用して計算したところ、「X YEARS、Y MONTHS、Z DAYS」の形式で o/p が返され、一部の日付では間違った o/p が返されました。式に欠けている計算をしたと思います。
機能は、
/**
* @param {Date} startdate
* @param {Date} enddate
* @return {String}
*/
function leasePeriodCalc(startDate,endDate)
{
var sdate=startDate;
var edate=endDate;
edate.setDate( edate.getDate()+1);
edate=new Date(edate);
if(sdate.valueOf()>edate.valueOf()){
return('0');
}
else{
var years=((((edate.getDate()-sdate.getDate())<0 ? -1:0)+((edate.getMonth()+1)-(sdate.getMonth()+1)))< 0 ? -1 : 0)+(edate.getFullYear()-sdate.getFullYear());
var months=((((edate.getDate()-sdate.getDate())<0 ? -1:0)+((edate.getMonth()+1)-(sdate.getMonth()+1)))< 0 ?12:0)+((edate.getDate()-sdate.getDate())<0 ? -1:0)+((edate.getMonth()+1)-(sdate.getMonth()+1));
if((edate.getMonth()-1)!=1.0)
{
var days=((edate.getDate()-sdate.getDate())< 0 ?new Date(edate.getFullYear(), edate.getMonth(),0).getDate():0)+(edate.getDate()-sdate.getDate());
}
else
{
var days=((edate.getDate()-sdate.getDate())< 0 ?new Date(edate.getFullYear(), edate.getMonth()+1,0).getDate():0)+(edate.getDate()-sdate.getDate());
}
var day;
var month;
var year;
if(years>1)year= years+ 'Years';
else year=years+'Year';
if(months>1) month= months+ 'Months';
else month=months+'Month';
if(days>1) day= days+ 'Days';
else day=days+'Day';
if(years==0&&months!=0&&days!=0) return(month+', '+day);
else if(years!=0&&months==0&&days!=0) return(year+', '+day);
else if(years!=0&&months!=0&&days==0) return(year+', '+month);
else if(years==0&&months==0&&days!=0) return(day);
else if(years==0&&months!=0&&days==0) return(month);
else if(years!=0&&months==0&&days==0) return(year);
else if(years==0&&months==0&&days==0) return(day);
else if(years!=0&&months!=0&&days!=0) return(year+', '+month+', '+day);
}
}
以下のように i/p を指定すると、偽の o/p が返されます。
2013 年 2 月 28 日 - 2014 年 2 月 28 日
期待される操作: 1 年、1 日
与えられた o/p : 1 年 , 4 日
しかし、2013 年 2 月 28 日から 2014 年 2 月 27 日を選択すると、正しい o/p が得られました。
期待されるo/p: 1年
与えられた o/p : 1 YEAR
私が何かをした場合、私の過ちを正すためのアドバイスをお願いします。
また、ルールをすべて設定しているわけではないことも伝えなければなりません。一般に、月はその月にある日に従って計算されます。
たとえば、銀行から融資を受ける場合、その月が 30 日または 29 日または 28 日または 31 日であっても、月ごとの利息のみを支払います。
また、月額レンタル手段の部屋を取る場合、月額の家賃のみを支払いますか?3月20日から4月19日まで可能です。31日を含んでいても、たったの1ヶ月と言われています。これを結論付けるのを手伝ってください。
TNX、CL.