node.js - 为什么 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
解决方案
您试图在几小时和几分钟内获得差异,这不会给出预期的结果,因为它们在不同的单元中是相同的。将它们转换为毫秒,将它们包装在时刻和格式中。
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);
推荐阅读
- python - Python BS4 Beautiful Soup HTML.Parser 在网站上不起作用
- image - Xamarin Forms如何水平填充图像视图并垂直扩展?
- karate - 空手道单场景多url访问
- python - 如何在没有 - 或 --(破折号)的情况下使用可选的 argumnets
- asp.net - 使用对象声明数据视图
- regex - 使用 spath 解析 json
- c++ - 不打印预期的内容,Travasa 函数中的错误?
- java - Gradle 依赖项没有被 Eclipse 导出到可运行的 jar
- python-3.x - 无法解决无法将“int”对象隐式转换为 str
- python - 在 Jupyter 中的多个子图 matplotlib 中指定子图的高度