Moment.js在UTCdate之间的差异

我正在使用moments.js在JavaScript中处理date。 所有的date都是UTC(或应该是)。

我有以下date(从目前的60分钟):

//Wed, 04 Apr 2012 21:09:16 GMT to = moment.utc().add('m', 60).toDate(); 

现在我想知道在这个date和当前UTCdate时间之间的差异,所以我这样做:

 seconds = moment.utc().diff(to, 'seconds'); 

这将返回10800而不是3600 ,所以3小时,而不是一个。

任何想法我做错了什么?

谢谢!

编辑:

我将行更新为seconds = moment().diff(to, 'seconds'); 它得到的秒数,但它是-3600而不是积极的。

编辑:

我现在有这两个时刻对象:

 { _d: Thu, 05 Apr 2012 17:33:18 GMT, _isUTC: true } { _d: Thu, 05 Apr 2012 16:38:45 GMT, _isUTC: true } 

d1和d2。

当我做d1.diff(d2, 'hours', true); 这返回4 。 我认为这绝对是UTC的事情,但似乎这应该起作用。

这是一个合法的错误。 我刚刚在这里提交: https : //github.com/timrwood/moment/issues/261

为了解决这个问题,请使用下面的代码。

 var a = moment.utc().add('m', 60).toDate(), b = moment().diff(to, 'seconds'); // use moment() instead of moment.utc() 

另外,如果您需要获取date的toString ,则可以使用moment().toString()代理包装的Date().toString()

因为你正在使用toDate()可能是时区踢。 尝试直接与时刻(即更改to = moment.utc().add('m', 60); )。