node.js - 如何将存储为 UTC 的本地时间转换为实际正确的 UTC 值

标签 node.js timezone momentjs

我将本地时间存储在 mongodb 中,例如“2016-04-25T09:30:00.000Z” 它保存为“UTC”(Z 在末尾),但实际上它是本地时间的字面表示。我还存储了时区,例如“欧洲/伦敦”,因此我拥有转换为正确的 utc 时间所需的所有信息。

因此,结果应该是“2016-04-25T08:30:00.000Z”,但我找不到如何做到这一点的方法。我尝试了时刻时区。

最佳答案

有一种比你现有的方法更简单、更不易出错的方法。只需使用忽略末尾的 Z 的格式来解析日期:

moment.tz("2016-04-25T09:30:00.000Z", 'YYYY-MM-DDTHH:mm:ss:SSS', 'Europe/London').format()
"2016-04-25T09:30:00+01:00"

日期已正确解析,获取UTC日期就像调用.toISOString()一样简单

moment.tz("2016-04-25T09:30:00.000Z", 'YYYY-MM-DDTHH:mm:ss:SSS', 'Europe/London').toISOString()
"2016-04-25T08:30:00.000Z"

请注意,如果这是本地日期,则无论时区如何,您都可以省略时区标识符,而仅使用浏览器的本地时间:

moment("2016-04-25T09:30:00.000Z", 'YYYY-MM-DDTHH:mm:ss:SSS').format()
"2016-04-25T09:30:00-05:00"

但我认为您正在使用 Node,因此第二个可能不是您想要的。

关于node.js - 如何将存储为 UTC 的本地时间转换为实际正确的 UTC 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36885538/

相关文章:

ajax - 获取终端命令(Nodejs)并通过 AJAX 发送到特定端口

html - 没有 Content-Length 的流媒体响应

Java 时间戳和 PHP 时间戳给出 2 个不同的时间

javascript - 当比较日期接近时,Moment js diff 出现意外结果

javascript - 使用 moment JS 制作简单时间线的问题

javascript - momentjs 获取版本号以显示在我的有关屏幕的帮助上

javascript - 创建文件路径的嵌套对象

node.js - Node 模块导出返回未定义

.net - UTC 和夏令时方案

python - 在 python 中使用时区获取当前时间?