gpt4 book ai didi

javascript - momentjs toDate - 不同客户端/浏览器上的不同输出

转载 作者:行者123 更新时间:2023-12-03 07:18:45 27 4
gpt4 key购买 nike

我使用 momentjs 解析日期字符串并将其转换为原生 JavaScript 日期:

let dateString = '1980-04-06';
console.log(moment().utcOffset());
console.log(moment(dateString, 'YYYY-MM-DD').toDate());
<script src="https://cdn.jsdelivr.net/npm/moment@2.22.2/moment.min.js"></script>

客户端 1(Firefox 62)的输出是

120
Date 1980 - 04 - 05 T23: 00: 00.000 Z

客户端 2(Firefox 52 ESR)的输出是

120
Date 1980 - 04 - 05 T22: 00: 00.000 Z

有人可以解释一下,为什么 utcOffset 是相同的(new Date().getTimezoneOffset() 在两个客户端上也打印 -120),但是日期 (小时)有什么不同?

最佳答案

您正在检查当前 UTC 偏移量,而不是 1980 时刻实例的偏移量。我的猜测是,如果您使用 moment(dateString, 'YYYY-MM-DD') 并在 that 上调用 utcOffset,您会得到不同浏览器上的不同偏移量。

我敢打赌,您所在区域的规则自 1980 年以来发生了变化(例如,DST 的时间可能发生了变化,或者 DST 已被添加或取消,或者标准偏移甚至可能发生了变化)。浏览器在正确获取历史区域数据的程度上各不相同,这会导致错误解释日期字符串。我怀疑 Firefox 为您的区域修复了他们的历史区域数据库,导致在新版本的浏览器中出现不同的行为。

关于javascript - momentjs toDate - 不同客户端/浏览器上的不同输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52932434/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com