如何计算两次之间的持续时间?
var start = moment('17:00', "HH:mm");
var end = moment('02:15', "HH:mm");
moment.duration(end.diff(start)).asHours()
//outputs -14.75 instead of 9.15
答案 0 :(得分:5)
时刻构造函数默认为当前年,月和日,因此您的问题是end
在start
之前。您可以使用isBefore
比较您的变量,然后使用add
来预测" trasform" end
到第二天。
请注意asHours
给出小数值(因此您将有9.25而不是9.15)。如果你需要9小时15分钟"您可以使用moment-duration-format插件(例如,您在template方法中使用'h[.]m'
作为format
。
这是一份工作样本:
var start = moment('17:00', "HH:mm");
var end = moment('02:15', "HH:mm");
if( end.isBefore(start) ){
end.add(1, 'day');
}
var dur = moment.duration(end.diff(start))
var result = dur.asHours();
document.writeln(result);
document.write(dur.format('h[.]m'));

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>
&#13;
答案 1 :(得分:0)
这是在一天内计算差异的最简单方法:
var start = moment('17:00', "HH:mm");
var end = moment('02:15', "HH:mm");
var duration = moment.duration(end.diff(start)).asHours();
if (duration < 0) duration += 24;
答案 2 :(得分:0)
我认为问题在于你有2个时刻对象,一个代表今天17:00,一个代表今天02:15。虽然你想今天17:00和明天02:15。只需使用moment('02:15', "HH:mm").add(1, 'days')
即可获得第二天。
var start = moment('17:00', "HH:mm");
var end = moment('02:15', "HH:mm").add(1, "days");
var result = moment.duration(end.diff(start)).asHours();
document.write(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>