Javascript 超过24小时的矩js格式失败
我试图在24小时内将momentjs格式化为hh:mm:ss,但我只有1小时,所以我已经尝试过了Javascript 超过24小时的矩js格式失败,javascript,momentjs,Javascript,Momentjs,我试图在24小时内将momentjs格式化为hh:mm:ss,但我只有1小时,所以我已经尝试过了 const start = moment('2019-02-27 00:00'); const end = moment('2019-03-01 01:00'); var diff =end.diff(start, 'seconds', true) let ff = moment.utc((diff) * 1000).format('HH:mm:ss') console.log(ff)
const start = moment('2019-02-27 00:00');
const end = moment('2019-03-01 01:00');
var diff =end.diff(start, 'seconds', true)
let ff = moment.utc((diff) * 1000).format('HH:mm:ss')
console.log(ff)
在上面我期望得到的
49:00:00
因为它是两天一小时所以24*2因为每天有24小时加上从00:0到01:00的一小时
我哪里出了问题,因为它显示01:00:00而不是49:00:00也遇到了同样的问题,这里是我的代码片段,如果这对您有帮助的话
let start = moment('2019-03-01 00:00:00');
let stop = moment();
const formatTimespan = (start, stop) => {
const diff = stop.diff(start, "hours", true);
const hours = Math.floor(diff);
const step = 60 * (diff - hours)
let mins = Math.floor(step)
let secs = Math.floor(60 * (step - mins));
mins = mins.toString().padStart(2, "0");
secs = secs.toString().padStart(2, "0");
return `${hours}:${mins}:${secs}`;
}
console.log(formatTimespan(start, stop));
我相信你不能用moment.js实现这一点,因为它总是在小时值中最多打印'24',2月27日到4月2日远远超过49小时。@Pointy我看到我用正确的范围进行了更新。你的差异实际上可能是49小时-但从这样一个日期库的角度来看,实际上是2天1小时。因此,当您尝试将其格式化为HH:mm:ss时,得到的结果是01:00:00。现有的格式选项似乎没有涵盖您想要的内容—它是一个日期库,而不是一个具有任意间隔的工作库,因此我认为您必须自己编写一些内容来获得正确的小时数。顺便说一句,您的结束日期是错误的。2016年应该是2019年。如果日期正确,变量diff将输出49。从那里你可以写一些东西来回应04FS的评论,并按照你的意愿格式化。