使用时刻在两个日期时间之间获得hh:mm的时差

pra*_*ngh 4 momentjs

我在获取两个时间戳(epoch格式)之间的时间差异方面存在问题.

我曾经moment().format("L LT")把它转换成所需的日期时间格式(MM/DD/YYYY HH:MM (12 hour)),但现在的问题是,我希望时间的差异hh:mm

PS:它也可能超过24小时.

我尝试了什么:

let timeDiffms,duration,timedifference,
start moment(startTimeStampInMS).format("L LT"),
end = moment(endTimeStampInMS).format("L LT");

timeDiffms = moment(end, "MM/DD/YYYY HH:mm").diff(moment(start, "MM/DD/YYYY HH:mm"));
duration = moment.duration(timeDiffms);
timedifference = Math.floor(duration.asHours()) +":"+duration.minutes();  // result

//output I am getting  
// start = "03/20/2017 3:11 PM" end="03/21/2017 9:45 AM" timedifference = "30:24", (incorrect)
// start = "03/20/2017 10:07 AM" end="03/23/2017 11:24 AM" timedifference = "73:17" (correct)
// start = "03/20/2017 3:11 PM" end="03/23/2017 11:31 AM" timedifference = "80:20" (incorrect) strange 
Run Code Online (Sandbox Code Playgroud)

我不知道这里发生了什么错.

pra*_*ngh 5

基于前面给出的答案,我能够解决相同的逻辑并为我的问题找到正确的解决方案.

let start moment(startTimeStampInMS),
end = moment(endTimeStampInMS);

let timediffms = end-start;    // difference in ms
let duration = moment.duration(timediffms);
 // _data should not be used because it is an internal property and can 
 //change anytime without  any warning 
//let hours = duration._data.days*24 + duration._data.hours; 
//let min = duration._data.minutes;
let hours = duration.days()*24+ duration.hours();
let min = duration.minutes();
timeDifference = hours +":"+ min;  // Answer
Run Code Online (Sandbox Code Playgroud)