首页 > 解决方案 > 为什么 momentjs 从差异中返回错误的分钟数?

问题描述

我尝试使用 moment 计算小时和分钟之间的差异。

例如,我想计算 8:00 和 18:00 之间的差异(应该是 10:00)。

但在我的代码中它出来了totalMinutes = 600。为什么?

const xin = '8:00';
const xout = '18:00';

const a = moment(xin, 'HH:mm');
const b = moment(xout, 'HH:mm');

const totalHours = moment.duration(b.diff(a)).asHours();
const totalMinutes = moment.duration(b.diff(a)).asMinutes();

console.log({ r: `${totalHours}:${totalMinutes}` });

// 10:600

标签: node.jsmomentjs

解决方案


您试图在几小时和几分钟内获得差异,这不会给出预期的结果,因为它们在不同的单元中是相同的。将它们转换为毫秒,将它们包装在时刻和格式中。

const moment = require("moment");
const xin = "8:00";
const xout = "18:00";

const a = moment(xin, "HH:mm");
const b = moment(xout, "HH:mm");

const duration = moment.utc(moment.duration(b.diff(a)).asMilliseconds()).format("HH:mm");


console.log(duration);



推荐阅读