我将本地时间存储在 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/