Расчеты даты в Excel и JavaScript отличаются - PullRequest
1 голос
/ 20 января 2012

Я пытаюсь сделать расчет даты в javascript, который соответствует одному в Excel.

//Excel 
=(EDATE(DATE(2000,6,1),60)-DATE(2012,1,20))

Это дает результат -2424

Поэтому я пытаюсь сделать то же самое вычисление в javascript со следующим

//Javascript -  using datejs library
a = Date.parse('2000/06/01').addMonths(60);
b = Date.parse('2012/01/20');
a.setHours(12,0,0);
b.setHours(12,0,0);
span = new TimeSpan(a - b);
console.log(span.getDays());

Это дает результат -2423

Я не понимаю, почему я теряю день. Может кто-нибудь пролить свет на то, как это может происходить.

Приветствует любую помощь заранее. :)

1 Ответ

1 голос
/ 20 января 2012

Если не сказать больше, в 2005 и 2008 гг. Произошли два скачка (оба по 31 декабря), что может учитываться любым приложением. Вы явно установили для своих дат JS значение «полдень», но не указали время для Excel, поэтому, вероятно, по умолчанию используется полночь, то есть, когда происходят дополнительные секунды. Это сделало бы вашу дату / время в Excel на 2 секунды меньше, чем в JS calcs, и могло бы пересечь границу полуночи, составляя ваш один пропущенный день.

...