Datetime 我如何让moment知道我';我给它的单位是UTC吗?

Datetime 我如何让moment知道我';我给它的单位是UTC吗?,datetime,momentjs,Datetime,Momentjs,事先道歉。由于这个图书馆很受欢迎,我肯定答案就在那里,但我一直没能找到它 我用这种格式从api获取时间戳 2014-09-27T00:00:00-07:00 此部件在UTC中的位置 2014-09-27T00:00:00 这部分是时区偏移量 -07:00 当转换到某个时刻时,我不知道如何让moment.js知道我正在传递的时间是UTC 如果我试试这个 var time = moment('2014-09-27T00:00:00-07:00'); console.log(time.forma

事先道歉。由于这个图书馆很受欢迎,我肯定答案就在那里,但我一直没能找到它

我用这种格式从api获取时间戳

2014-09-27T00:00:00-07:00
此部件在UTC中的位置

2014-09-27T00:00:00
这部分是时区偏移量

-07:00
当转换到某个时刻时,我不知道如何让moment.js知道我正在传递的时间是UTC

如果我试试这个

var time = moment('2014-09-27T00:00:00-07:00');
console.log(time.format("YYYY-MM-DDTHH:mm:ss"));
time.local();
console.log(time.format("YYYY-MM-DDTHH:mm:ss"));
两个控制台日志的输出相同

但是如果我这样做

var time = moment('2014-09-27T00:00:00-07:00');
time.utc();
console.log(time.format("YYYY-MM-DDTHH:mm:ss"));
time.local();
console.log(time.format("YYYY-MM-DDTHH:mm:ss"));
它将准确地添加7小时(我与UTC的时差)记录它,删除时间并再次记录

我试过了

var time = moment.utc('2014-09-27T00:00:00-07:00');
但即使这样,.local()方法也不会做任何事情

我错过了什么


另一个相关问题。。。在标准ISO 8601格式中,时间字符串是否理解为本地时间或UTC?偏移量可以在任意方向上转换,我只是不确定起点是什么。

您是否试图解析它,以便它输出2014-09-27T00:00:00+00:00?因为时间戳与2014-09-27T00:00:00-07:00不同。如果要解析2014-09-27T00:00:00-07:00,则应使用parseZone()然后减去zone()分钟来获取UTC值。更简单的方法是首先删除-07:00部分,然后使用矩.utc()解析。在解决此问题的过程中,我发现我对iso8601戳记的解释有错误的假设。我以为它是utcTime+-Offset,后来才知道它是LocalTime+-Offset或utcTime+z(z代表零偏移)。现在,我使用了正确的格式,矩的工作正如预期。