Я использовал moment.js в течение короткого времени, и это упростило обработку дат, но у меня есть конкретный случай, который терпит неудачу, и я не понимаю, почему.
При расчете разницы между сегодняшним днем (31 октября 2013 года) и 1 февраля 2014 года разница в месяцах возвращается как 2, хотя между двумя датами есть 3 полных месяца и один день.
Разница между 31 октября и 31 января прекращается: 3 месяца и ноль.
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()? Каждый из моих других тестовых случаев проходит успешно.