gpt4 book ai didi

javascript - 使用 Moment.js 从 ISO 字符串中提取 utcOffset

转载 作者:搜寻专家 更新时间:2023-11-01 04:51:47 26 4
gpt4 key购买 nike

我尝试使用 moment.js 从 ISO 日期字符串中提取偏移量,以便稍后在格式化纪元时间戳时使用偏移量,以确保时间戳的转换在同一时区内。

即使字符串中的偏移量为-0400,结果始终为0;

var currentTime = "2015-03-18T16:10:00.001-0400";
var utcOffset = moment(currentTime).utcOffset(); // 0

我也尝试过使用 parseZone() 但没有成功。有没有办法从字符串中提取 -0400,以便我可以在下次格式化时使用它?

感谢您的帮助!KC

最佳答案

提取偏移量的正确方法确实是使用 parseZone

var currentTime = "2015-03-18T16:10:00.001-0400";
var utcOffset = moment.parseZone(currentTime).utcOffset();

这应该导致 -240,这意味着比 UTC 晚 240 分钟,这与输入字符串中的 -0400 相同。如果你想要字符串形式,而不是 utcOffset() 你可以使用 .format('Z') for "-04:00".format('ZZ') 用于 "-0400"

您在问题中提供的表格仅使用计算机的本地时区。因此,当前在您的时区(或代码运行的任何地方)是 UTC+00:00,这可以解释为什么您会得到零。您必须使用 parseZone 来保留输入字符串的偏移量。

此外 - 您的用例有点令人担忧。请记住,偏移量时区 不同。时区可以在不同的时间点更改其偏移量。许多时区这样做是为了适应夏令时。如果您从一个时间戳中选择一个偏移量并将其应用于另一个时间戳,则无法保证偏移量对于新时间戳是正确的。

例如,考虑美国东部时区,当夏令时于 2015 年 3 月 8 日生效时,它刚刚从 UTC-05:00 更改为 UTC-04:00。提供并将其应用于 3 月 1 日这一日期,您会将其置于大西洋时区而不是东部时区。

关于javascript - 使用 Moment.js 从 ISO 字符串中提取 utcOffset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29130440/

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