私はしばらくの間 moment.js を使用しており、日付操作がはるかに簡単になりましたが、失敗する特定のケースがあり、その理由がわかりません。
今日 (2013 年 10 月 31 日) と 2014 年 2 月 1 日の差を計算すると、2 つの日付の間に 3 か月と 1 日あるにもかかわらず、月の差は 2 として返されます。
10 月 31 日から 1 月 31 日までの差分は正常に機能します: 3 か月と 0 日です。
var mStartDate = moment([ periodStartDate.getFullYear(), periodStartDate.getMonth(), periodStartDate.getDate() ]);
var mTermDate = moment([ someDate.getFullYear(), someDate.getMonth(), someDate.getDate() ]);
console.log('periodStartDate: ' + periodStartDate);
console.log('someDate: ' + someDate);
// Years
var yearsDiff = mTermDate.diff(mStartDate, 'years');
// Months
var monthsDiff = mTermDate.diff(mStartDate, 'months', true);
コンソールには次のログが記録されます。
periodStartDate: Thu Oct 31 2013 11:13:51 GMT+0000 (GMT)
someDate: Sat Feb 01 2014 11:13:51 GMT+0000 (GMT)
monthsDiff: 2
丸めないブール値として true を渡すと、月の差分は次のようになります。
monthsDiff: 2.983050847457627
これは Moment.js.diff() の単なるバグですか? 私の他のテストケースはすべて成功しました。