2つの日付の間に何年経過したかを計算する必要があります。私のコードは、非常に特定の日付を除いて、正常に機能します。
dateEnd
以下のコードは、との両方で同じ年の差を生成するはずですdateEnd1
が、等しくはありません。2003年から2004年に年を変えると、同じになります。もし私がその年を去るが、3月から2月に変わるならば、それは再び等しくなるでしょう。
うるう年と関係があると思いますが、なぜかわかりません。特に、その期間にはうるう年が4年あったため、年の誤算は1日だけ離れた日付で発生します。
どちらの場合も年差は12になると思いますが、最初のケースではdateEnd
変数を使用して13になります。
var dateStart = '2003,03,11';
var dateEnd = '2016,03,10';
var dateEnd1 = '2016,03,09';
var difference = (new Date(dateEnd)).getTime() - (new Date(dateStart)).getTime();
difference = (new Date(difference)).getFullYear() - 1970;
alert('Between ' + dateStart + ' and ' + dateEnd + ' elapsed ' + difference + ' years.');
difference = (new Date(dateEnd1)).getTime() - (new Date(dateStart)).getTime();
difference = (new Date(difference)).getFullYear() - 1970;
alert('Between ' + dateStart + ' and ' + dateEnd1 + ' elapsed ' + difference + ' years.');
これがjsfiddleのコードです。コメントの1人は、彼のjsfiddleで問題を再現することができました!
これが私が得る変数の値です
dateStart time: 1047337200000
dateEnd time: 1457564400000
dateEnd1 time: 1457478000000
Time difference for the first case: 410227200000
Between 2003,03,11 and 2016,03,10 elapsed 13 years.
Time difference for the second case: 410140800000
Between 2003,03,11 and 2016,03,09 elapsed 12 years.