UTC日期之间的Moment.js差异

dzm*_*dzm 16 javascript date node.js momentjs

我正在使用moments.js来处理javascript中的日期.所有日期均为UTC(或应为).

我有以下日期(距当前时间60分钟):

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

现在我想得到这个日期和当前UTC日期时间之间的差异,所以我这样做:

seconds = moment.utc().diff(to, 'seconds');
Run Code Online (Sandbox Code Playgroud)

这将返回10800而不是36003小时而不是1小时.

我有什么想法我做错了吗?

谢谢!

编辑:

我更新了线路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 }
Run Code Online (Sandbox Code Playgroud)

d1和d2.

当我这样做时d1.diff(d2, 'hours', true);返回4.我认为这绝对与UTC有关,但似乎这应该有效.

tim*_*ood 17

这是一个合法的错误.我刚刚在这里提交: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()
Run Code Online (Sandbox Code Playgroud)

此外,如果您需要获取toString日期,您可以使用moment().toString()它作为包装的代理Date().toString()

  • 仅供参考,这是在1.6.0版本中修复的. (7认同)

Sup*_*upr 0

可能是因为您使用的是时区toDate()。尝试直接使用 moment (即将其更改为to = moment.utc().add('m', 60);)。