UTC日期之间的Moment.js差异

Moment.js diff between UTC dates

本文关键字:js 差异 Moment 日期 之间 UTC      更新时间:2023-09-26

我使用moments.js处理javascript中的日期。所有日期都是UTC(或应该是)。

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

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

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

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

这将返回10800而不是3600,因此将返回3小时而不是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 }

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()

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

由于您使用的是toDate(),可能会出现时区。试着直接使用力矩(即将其更改为to = moment.utc().add('m', 60);)。