即使设置了时区,也会返回两个日期之间的错误差异

moment returning wrong difference between two dates even with timezone setup

我有这个代码:

  const effectDateParsed = moment(
    new Date( `${ effectDate.split( '-' )[2] }-${ effectDate.split( '-' )[1] }-${ effectDate.split( '-' )[0] }` ),
    'Africa/Tunis',
  );
  const deadlineDateParsed = moment(
    new Date( `${ deadlineDate.split( '-' )[2] }-${ deadlineDate.split( '-' )[1] }-${ deadlineDate.split( '-' )[0] }` ),
    'Africa/Tunis',
  );
  let remainingMonths = deadlineDateParsed.diff( effectDateParsed, 'months' );

现在结果因笔记本电脑的时区而异。如果笔记本电脑的时区是 Africa/Tunisia

 remainingMonths = 6 

如果在欧洲:

remainingMonths = 5 

可能这也与时区无关,这是我测试的:

  1. 手动设置时区为Africa/Tunisia,差异正确
  2. 手动设置时区为Europe/Paris,差异不正确
  3. 从 moment 中删除时区设置并重试 1 + 2,结果与已设置相同。

对此有什么想法吗?

编辑: 这些是我正在测试的两个日期:2021/01/01 和 2020/07/01 (YYYY/MM/DD)

也许我在这里误解了什么,但是像他们所做的那样明确设置时区 here,对我来说 Africa/TunisEurope/Paris:

const diffEuropeZone = moment.tz("2021-01-01", "Europe/Paris").diff(moment.tz("2020-07-01","Europe/Paris"), "months");

const diffAfricaZone = moment.tz("2021-01-01", "Africa/Tunis").diff(moment.tz("2020-07-01","Africa/Tunis"), "months");

console.log("diff Europe-zone = ",diffEuropeZone); // logs 6
console.log("diff Africa-zone = ",diffAfricaZone ); // logs 6
<script src="https://momentjs.com/downloads/moment.min.js"></script>
<script src="https://momentjs.com/downloads/moment-timezone-with-data.min.js"></script>