Друзья, всем привет!
Никак не получается посчитать возраст за прошлый период. По некоторым датам возвращает NaN.
Задача заключается в том, чтобы получить возраст коровы за прошлый период. Далее на основе этого возраста делать дальнейшую манипуляцию
function ageInLastYear(year, cow) {
var bdate = moment(cow.bdate);
var month = bdate.format("MM")-1;
var day = bdate.format("DD");
year = moment([year,month, day]);
return year.diff(bdate, "month");
}
function testCows() {
var cows = getCows().filter(function (cow) { return cow.gender === "Ұрғашы" });
var getCow = function(vid){
return cows.filter(function(cow){return cow.vid === vid})[0];
}
var log = function(year, cow){
var age = ageInLastYear(year,cow);
Logger.log(year+" "+cow.vid+" "+cow.age+" "+age+" "+ cow.bdate);
}
log(2018,getCow(17)); // вывод 2018 17 60 35 2015-12-31T14:00:00-05:00
log(2019,getCow(17)); // вывод 2019 17 60 47 2015-12-31T14:00:00-05:00
log(2020,getCow(17)); // вывод 2020 17 60 59 2015-12-31T14:00:00-05:00
log(2021,getCow(17)); // вывод 2021 17 60 71 2015-12-31T14:00:00-05:00
Logger.log("-==-");
log(2018,getCow(28)); // вывод 2018 28 55 NaN 2016-02-29T14:00:00-05:00
log(2019,getCow(28)); // вывод 2019 28 55 NaN 2016-02-29T14:00:00-05:00
log(2020,getCow(28)); // вывод 2020 28 55 47 2016-02-29T14:00:00-05:00
log(2021,getCow(28)); // вывод 2021 28 55 NaN 2016-02-29T14:00:00-05:00
Logger.log("-==-");
log(2018,getCow(204)); // вывод 2018 204 11 NaN 2020-02-29T14:00:00-05:00
log(2019,getCow(204)); // 2019 204 11 NaN 2020-02-29T14:00:00-05:00
log(2020,getCow(204)); // 2019 204 11 NaN 2020-02-29T14:00:00-05:00
log(2021,getCow(204)); // 2019 204 11 NaN 2020-02-29T14:00:00-05:00
Logger.log("-==-");
}
Ошибку можно воспроизвести на сайта момента вот эту строку:
moment([2018, 12, 31]).diff(moment("2015-12-31T14:00:00-05:00").format(), "month")