获取两个日期时间之间的时间差

282
如何计算两个时间之间的差异?例如:
var now  = "04/09/2013 15:00:00";
var then = "04/09/2013 14:20:30";

//expected result:
"00:39:30"

我试过了。
var now = moment("04/09/2013 15:00:00");
var then = moment("04/09/2013 14:20:30");

console.log(moment(moment.duration(now.diff(then))).format("hh:mm:ss"))
//outputs 10:39:30

那里的"10"是什么意思?我现在是在UTC-0300时区。执行moment.duration(now.diff(then))的结果是一个内部值正确的持续时间。
 days: 0
 hours: 0
 milliseconds: 0
 minutes: 39
 months: 0
 seconds: 30
 years: 0

如何将momentjs的持续时间转换为时间间隔?我可以使用:
duration.get("hours") +":"+ duration.get("minutes") +:+ duration.get("seconds")

但是有没有更优雅的东西呢?现在是:
Tue Apr 09 2013 15:00:00 GMT-0300 (E. South America Standard Time)…}

moment(moment.duration(now.diff(then))) 是:
Wed Dec 31 1969 22:39:30 GMT-0200 (E. South America Daylight Time)…}

数值为-0200,因为在1969年12月31日使用了夏令时。

4
“但我确定我不喜欢约会” :P 你有没有读过这个:http://nodatime.org/unstable/userguide/trivia.html? - Boris Callens
22个回答

0
如果您想要在两个日期(startDateendDate)之间获得本地化的天数:
var currentLocaleData = moment.localeData("en");
var duration = moment.duration(endDate.diff(startDate));
var nbDays = Math.floor(duration.asDays()); // complete days
var nbDaysStr = currentLocaleData.relativeTime(returnVal.days, false, "dd", false);

nbDaysStr 将包含类似于“3天”的内容;

请参阅https://momentjs.com/docs/#/i18n/changing-locale/,了解如何显示小时或月份等信息。


0

要获取两个时刻格式日期之间的差异或JavaScript日期格式中分钟的不同,最优解决方案是

const timeDiff = moment.duration((moment(apptDetails.end_date_time).diff(moment(apptDetails.date_time)))).asMinutes()

你可以通过替换asMinutes()函数来根据需要更改差异格式


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接