我正在使用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有关,但似乎应该工作。
答案 0 :(得分: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()
答案 1 :(得分:0)
因为您正在使用toDate()
,所以可能会出现时区问题。尝试直接使用时刻(即将其更改为to = moment.utc().add('m', 60);
)。