javascript - 即使使用时区设置,两个日期之间的时间差也会返回错误
问题描述
我有这个代码:
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' );
现在结果因笔记本电脑的时区而异。如果笔记本电脑的时区是非洲/突尼斯
remainingMonths = 6
如果在欧洲:
remainingMonths = 5
可能这也与时区无关,这是我测试的:
- 手动将时区设置为非洲/突尼斯,差异是正确的
- 手动将时区设置为欧洲/巴黎,差异不正确
- 从时刻删除时区设置并重试 1 + 2,结果与设置相同。
对此有任何想法吗?
编辑:这是我正在测试的两个日期:2021/01/01 和 2020/07/01 (YYYY/MM/DD)
解决方案
也许我在这里误解了一些东西,但是像他们在这里所做的那样明确设置时区,对我来说都适用,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>
推荐阅读
- c++ - 在 QT 中使用 dll 文件
- python - 将 string.split() 作为参数传递给另一个函数时不起作用
- typescript - 在创建堆栈导航器之前如何导航到屏幕?
- sql - 使用计数选择最小值和最大值
- python - 在 Python 中实现表面模糊
- c - 有没有办法通过使用索引来迭代/递归二叉树?
- javascript - 如何在 Javascript HTML 文件中显示图像?
- java - 能够从 PDF 中删除页眉、页脚但同时删除页码 ex: 1/1 在此能够删除 1 但仍然 / 出现在文件的末尾
- python - 根据另一列更改列的值
- c# - asp.net framework 4.7配置日志级别,不工作