我一直在浏览文档而且我不确定我做错了什么。我需要将7200
转换为2:00:00
。好像很容易?一些尝试:
var duration = 7200;
var display = moment().seconds(duration).format("h:mm:ss");
和...
var duration = 7200;
var display = moment.duration(duration, "seconds"); //can't chain on a format method?
格式重新正确,但数字都错了。如果我使用的持续时间为Math.round(7025.526)
或7025.526
,我会回复9:19:06
。
如何成功将秒数转换为h:mm:ss
?
答案 0 :(得分:4)
当您使用moment().seconds(duration)
时,它将占用当前日期和时间,然后将秒组件设置为该值(溢出为分钟和小时)。如果您在不同时间尝试,您会看到结果发生变化。
持续时间对象无法格式化为日期,因为它不是日期。它是一段时间,没有任何明确的起点或终点。
要转换秒数,首先要创建一个空的时刻对象,它将是当前日期和时间0:00:00。然后你可以设置秒数,这会在几分钟和几小时内完成。
您可能希望使用H
而不是h
来格式化小时数。这样可以避免将时间少于一小时12:nn:nn
而不是0:nn:nn
:
var duration = 7200;
var display = moment({}).seconds(duration).format("H:mm:ss");
答案 1 :(得分:2)
let duration = seconds;
let hours = duration/3600;
duration = duration % (3600);
let min = parseInt(duration/60);
duration = duration % (60);
let sec = parseInt(duration);
if (sec < 10) {
sec = `0${sec}`;
}
if (min < 10) {
min = `0${min}`;
}
if (parseInt(hours, 10) > 0) {
return (`${parseInt(hours, 10)} : ${min} : ${sec}`)
}
return (`${min} : ${sec}`)
您可以通过计算小时分和秒来手动完成
答案 2 :(得分:0)
使用moment-duration-format plugin:
var s = moment.duration(ms).format("h:mm:ss");
或者,只是使用片刻:
var d = moment.duration(ms);
var s = Math.floor(d.asHours()) + moment.utc(ms).format(":mm:ss");