javascript - 将时间戳从时区转换为 UTC 时间戳?

标签 javascript node.js datetime timezone momentjs

我从第三方 API 收到时间戳,如下所示:1540388730994。但是,我被告知该时间戳位于'Europe/Amsterdam'时区。

我需要将此时间戳转换为 UTC,因为我们将所有日期存储在 UTC 中。

这在 JavaScript 中怎么可能?

到目前为止我已经尝试过:

const timestamp = 1540388730994

const timestampInUTC = moment.tz(timestamp, 'Europe/Amsterdam').utc().valueOf()

console.log(timestamp, timestampInUTC)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.21/moment-timezone-with-data-2012-2022.min.js"></script>

但是,您可以清楚地看到两个输出时间戳是相同的,而我预计转换会减去 1-2 小时,因为阿姆斯特丹时区是 GMT+2。

我在这里做错了什么?

最佳答案

数字形式的时间戳始终采用 UTC 格式。如果他们出于某种原因手动添加/减去时区偏移量,那么他们就做错了。您不会看到任何时刻的变化,因为无论您代表的本地时间等效于哪个时区,UTC 时间戳都是相同的时刻。如果您预计时间戳会发生变化,那将代表完全不同的时刻。

关于javascript - 将时间戳从时区转换为 UTC 时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52975985/

相关文章:

Javascript/JQuery 从字符串中删除数据

node.js - 使用 Angular 和 NodeJS 进行 Google 2 因素身份验证

PHP:将纪元转换为 MySQL DateTime 格式

python datetime fromtimestamp 产生值错误年份超出范围

Javascript/Node.JS 多次查找两个字符串之间的文本

c# - 为初始加载编译后的 ASP.Net MVC 切换文化

javascript - 迁移到 Angular 2.0 和 BindToController

javascript - html5 Canvas : maxWidth argument to fillText produces ugly results in Chrome

javascript - 给伪元素添加渐变

javascript - 如何在 typescript 中构建具有双向对等依赖性的库?