нецелая разница в днях - PullRequest
       7

нецелая разница в днях

0 голосов
/ 25 февраля 2020

Я не спрашиваю, почему следующее differenceInDays неверно.

После того, как я это выяснил, я вроде как выгнал себя.

Но мне интересно, что является правильным решением.

/**
 * differenceInDays - return the difference in days between 2 dates.
 *
 *   Since `moment.duration.asDays` can return a non-integral value
 *   (i.e. 36 hours == 1.5 days) each date is first adjusted to the
 *   start of day before the difference is determined.
 */
const differenceInDays = (date1, date2, timezone) => {
  const localStartOfDay1 = moment(date1)
    .tz(timezone)
    .startOf('day');
  const localStartOfDay2 = moment(date2)
    .tz(timezone)
    .startOf('day');
  return moment.duration(localStartOfDay2.diff(localStartOfDay1)).asDays();
};
  expect(differenceInDays('2020-03-08T17:00:00Z',
                          '2020-03-09T17:00:00Z',
                          'America/New_York')).toEqual(1);
    Expected value to equal:
      1
    Received:
      0.9583333333333334

1 Ответ

0 голосов
/ 25 февраля 2020

Результат может быть не целочисленным, если DST-переход или настройка скачка происходят между date1 и date2.

Одним из исправлений может быть просто округление результата.

...