16

我正在使用moment.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有关,但似乎这应该可行。

4

2 回答 2

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

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

于 2012-04-06T06:19:34.300 回答
0

由于您使用的是toDate(). 尝试直接使用 moment(即更改为to = moment.utc().add('m', 60);)。

于 2012-04-04T20:42:16.640 回答