Moment.js, расчет разницы в днях со смещением по UTC

#javascript #momentjs #moment-timezone

Вопрос:

Я написал сценарий страницы для друга, который рассчитывает дни с установленной даты для игры, в которую он играет, но я запутываюсь, пытаясь рассчитать разницу в датах.

До сих пор это мой код

 // Get the day difference
const getDayDifference = function() {
  // Get current time in offset
  const _start = moment(
    moment
      .utc(new Date('2020-11-06'))
      .utcOffset(offsetCETTime)
      .format()
  );
  const _today = moment(
    moment
      .utc(new Date())
      .utcOffset(offsetCETTime)
      .format()
  );
  
  console.log(_today.diff(_start, 'days')); // *1

  const duration = moment.duration(_today.diff(_start));
  console.log(_start, _today, duration);
  let _daysDifference = duration.asDays();
  console.log(_daysDifference); // *2

  // If negative, convert it to positive
  _daysDifference =
    _daysDifference < 0 ? _daysDifference * -1 : _daysDifference;

  return _daysDifference;
};
 

Вот даты, с которых я работаю в настоящее время, которые сгенерированы из этого

_start._i = 2020-11-06T02:00:00 02:00 (but _start._d = Date Fri Nov 06 2020 13:00:00 GMT 1300 (New Zealand Daylight Time))

_today._i = 2021-08-20T02:03:46 02:00 (but _today._d = Date Fri Aug 20 2021 12:03:46 GMT 1200 (New Zealand Standard Time))

И вот что показывает моя консоль

*1 = 286

*2 = 287.00261574074074

Теперь я пытаюсь использовать оператор модуля, чтобы узнать, какой был бы день, если бы мы разделили его на 11 дневных сегментов, так что dayNumber = _daysDifference % 11;

Согласно веб-сайту времени и даты, моя разница в дате должна составлять 287 (https://www.timeanddate.com/date/durationresult.html?d1=6amp;m1=11amp;y1=2020amp;d2=20amp;m2=8amp;y2=2021), но, как вы можете видеть, я не понимаю этого ни с одним из моих приведенных выше расчетов момента, пока не достигну 2 часов ночи в тот день, поэтому цифры не совпадают.

Одно замечание по этому поводу: мой компьютер настроен на NZST, и я не уверен, имеет ли это какое-либо отношение к этому?

Кто-нибудь может посмотреть, что я могу сделать, чтобы это исправить? Я где-то что-то неправильно рассчитываю/форматирую? Это мой первый проект с использованием Moment.