即使设置了时区,也会返回两个日期之间的错误差异
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
可能这也与时区无关,这是我测试的:
- 手动设置时区为Africa/Tunisia,差异正确
- 手动设置时区为Europe/Paris,差异不正确
- 从 moment 中删除时区设置并重试 1 + 2,结果与已设置相同。
对此有什么想法吗?
编辑:
这些是我正在测试的两个日期:2021/01/01 和 2020/07/01 (YYYY/MM/DD)
也许我在这里误解了什么,但是像他们所做的那样明确设置时区 here,对我来说 Africa/Tunis
和 Europe/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>
我有这个代码:
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
可能这也与时区无关,这是我测试的:
- 手动设置时区为Africa/Tunisia,差异正确
- 手动设置时区为Europe/Paris,差异不正确
- 从 moment 中删除时区设置并重试 1 + 2,结果与已设置相同。
对此有什么想法吗?
编辑: 这些是我正在测试的两个日期:2021/01/01 和 2020/07/01 (YYYY/MM/DD)
也许我在这里误解了什么,但是像他们所做的那样明确设置时区 here,对我来说 Africa/Tunis
和 Europe/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>