Момент. js неправильно рассчитывает недели между двумя датами - PullRequest
0 голосов
/ 09 апреля 2020

Я установил 2 момента, переменная birth_date - это момент, равный (1997-12-08) (ГГГГ-ММ-ДД), а смерть_Дата - это момент, равный (2097-12-08) (ГГГ- MM-DD)

//returns the weeks to live between death and birth date, rounded to upper week

var weeks_to_live = moment(death_date).diff(moment(birth_date), 'days') / 7;
console.log("semanas a vivir: " + Math.ceil(weeks_to_live))
return Math.ceil(weeks_to_live);

Эта операция возвращает 5218 недель. В то время как Google и почти любой онлайн-калькулятор говорят, что 100 лет имеют 5214 недель.

Почему существует такая разница?

РЕДАКТИРОВАТЬ : Нашли другие onine caculator, которые возвращают мой результат Кто тогда прав?

1 Ответ

1 голос
/ 09 апреля 2020

Да, это из-за високосных лет:

> (new Date('2097-12-08') - new Date('1997-12-08')) / (1000 * 3600 * 24)
36525

Это число, по сути, сколько дней между этими двумя датами: их разница в миллисекундах, деленная на милли (1000) * секунд в часе (3600) * часов в день (24).

Как видите, между этим числом и 36500 (100 * 365) довольно много «расхождений» - если быть точным, 25 дней. И да, эти 25 дней составляют разницу ~ 4 недели.

...