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

标签 javascript momentjs

我尝试使用 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/

相关文章:

javascript - 在大数组上使用多个 '.filter' 调用是否会影响性能?

php - 抓取图像的自定义 URL 并通过 AJAX 调整它们的大小

javascript - 使用 momentjs 在特定语言环境中格式化日期

javascript - moment - 查找给定月份的日期名称

javascript - 如何通过moment()判断今天是第二天

javascript - Node.js 中未定义上传的图像数据

javascript - Sproutcore 自定义 CSS

javascript - 在调用 api 函数之前等待内部指令编译

javascript - 使用 Moment 获取 Date 对象的月份

c# - 时刻.js : Convert UTC date from database into local time