假设我有时间指定给定的Olson / tz数据库时区,例如1973年7月1日15h 23min在非洲/马普托。

如何在node.js中将其转换为通用时间UT,反之亦然?我已经在网上看到了一些图书馆,但是文档尚不清楚。欢迎使用完整的代码示例。

最佳答案

moment.jsmoment-timezone一起使用,并假定为ISO8601格式(未指定)。

加载node.js

(网络浏览器可以跳过此步骤)

npm install moment-timezone


var moment = require('moment-timezone');


从当地时间转换为UTC

var m = moment.tz("1973-07-01T15:23", "Africa/Maputo");
var s = m.toISOString();  // "1973-07-01T13:23:00.000Z"


要么

var m = moment.tz("1973-07-01T15:23", "Africa/Maputo");
var s = m.utc().format();  // "1973-07-01T13:23:00.000+00:00"


如果您只是通过API发送结果或将结果保存在数据库中,则第一种形式更紧凑且最简单。第二种形式是使用utc函数的示例,如果您打算将参数传递给format以产生格式不同的字符串,或者您打算调用除format以外的其他函数,则该方法将更为有用。

从UTC转换为当地时间

var m = moment.utc("1973-07-01T13:23").tz("Africa/Maputo");
var s = m.format();  // "1973-07-01T15:23:00+02:00"


要么

var m = moment("1973-07-01T13:23:00.000Z").tz("Africa/Maputo");
var s = m.format();  // "1973-07-01T15:23:00+02:00"


在第一种形式中,我展示了您可以使用moment.utc函数来解析不包含偏移量信息的字符串,并将其解释为UTC。这是更明确的形式。

第二种形式显示,当存在偏移量信息(Z+00:00形式)时,将其考虑在内。尽管中间结果是本地模式下的矩对象,但是基础时间戳仍基于UTC,因此到指定时区的转换仍然提供相同的输出。

10-07 16:20
查看更多