我是这个图书馆的新人。我有2个日期,我想获取两者之间的天数,分钟数和小时数之差。但由于某种原因,输出是错误的数据。我基于此页面
获得确切的差异,它与我的结果不同。我究竟做错了什么?
var now=2018-07-04 00:37:02;
var then=2018-07-05 08:00:00;
moment.utc(moment(now,"YYYY/MM/DD HH:mm:ss").diff(moment(then,"YYYY/MM/DD
HH:mm:ss"))).format("HH:mm:ss");
output is : 16:37
答案 0 :(得分:0)
这里有两个重大问题:
a.diff(b)
返回a - b
,因此,如果a
晚于b
,则为正。您正在有效地使用now.diff(then)
,因此当前会带来负面的影响,我怀疑您期望它是正面的。moment.utc
将持续时间转换为日期/时间。值不是是日期/时间,因此不应将其视为一个。而是使用moment.duration(...)
转换为moment.js Duration
对象,然后可以根据需要处理该对象。这是一个完整的示例,为了便于阅读,对每个转换进行了细分:
var now = "2018-07-04 00:37:02";
var then = "2018-07-05 08:00:00";
var parsedNow = moment(now, "YYYY/MM/DD HH:mm:ss");
var parsedThen = moment(then, "YYYY/MM/DD HH:mm:ss");
var diff = parsedThen.diff(parsedNow);
var durationDiff = moment.duration(diff);
alert(durationDiff.toISOString());
输出:PT31H22M58S
那31小时是1天+ 7小时,等等。虽然持续时间的概念是天,月,年等,但我看不到将从diff
创建的持续时间标准化为“ 1天”的任何方法7小时”。 (当然可以做到,但只能做到几天-您不能在不提供更多上下文的情况下将数月归一化。)