我是Momentjs的新手。我试图用它来将毫秒转换为小时和分钟。下面,x是毫秒
x = 433276000
var y = moment.duration(x, 'milliseconds').asHours;
有人可以帮忙吗?
答案 0 :(得分:52)
我最终这样做了......
var x = 433276000
var tempTime = moment.duration(x);
var y = tempTime.hours() + tempTime.minutes();
答案 1 :(得分:29)
试试这个:
var x = 433276000
var d = moment.duration(x, 'milliseconds');
var hours = Math.floor(d.asHours());
var mins = Math.floor(d.asMinutes()) - hours * 60;
console.log("hours:" + hours + " mins:" + mins);
答案 2 :(得分:17)
使用moment-duration-format plugin:
moment.duration(ms).format("h:mm")
答案 3 :(得分:12)
您可以使用moment.utc()从毫秒创建Moment.js日期。
var milliseconds = 1000;
moment.utc(milliseconds).format('HH:mm');
答案 4 :(得分:5)
有一种更简单的方法可以达到你想要的效果。
此
moment('2000-01-01 00:00:00').add(moment.duration(1000)).format('HH:mm:ss');
将输出此
00:00:01
我知道,这不是最高级的,但它是100%纯粹的时刻js。
编辑 :超过24小时不起作用
答案 5 :(得分:2)
这似乎不受支持per this SO。在this github issue之后,您可以使用moment-to-countdown plugin。
但看起来你可能首先需要Countdown.js。
countdown(0, 433276000, countdown.HOURS | countdown.MINUTES).toString();
请注意,这并没有考虑闰秒,也没有考虑到任何问题,因为它修复了Unix时代(所以它不是一个纯粹的时间间隔)。
答案 6 :(得分:2)
确实没有必要使用Moment进行此操作。
它可以写成一行:
var hours = Math.round((450616708 / 1000 / 60 / 60) * 100) / 100;
或作为功能:
function millisecondsToHours(ms){
return Math.round((ms / 1000 / 60 / 60) * 100) / 100;
}
答案 7 :(得分:1)
在Moment.js持续时间内,如果您希望它超过24小时,您可以使用Math.trunc几个小时。 hh:mm:ss格式。
var seconds = moment.duration(value).seconds();
var minutes = moment.duration(value).minutes();
var hours = Math.trunc(moment.duration(value).asHours());
答案 8 :(得分:1)
这是一个将其格式化为字符串的函数。
function ms_to_str(val) {
let tempTime = moment.duration(val),
timeObj = {
years: tempTime.years(),
months: tempTime.months(),
days: tempTime.days(),
hrs: tempTime.hours(),
mins: tempTime.minutes(),
secs: tempTime.seconds(),
ms: tempTime.milliseconds()
},
timeArr = [];
for (let k in timeObj) {
if (Number(timeObj[k]) > 0) {
timeArr.push(`${timeObj[k]} ${k}`)
}
}
return timeArr.join(', ');
}
然后只需调用ms_to_str(2443253)
即可返回40 mins, 43 secs, 253 ms
。
如果不需要显示毫秒,只需在ms: tempTime.milliseconds().toString().padStart(3, '0')
行中注释掉。
答案 9 :(得分:0)
Momentjs本身不支持持续时间,为此,我们需要一个插件moment-duration-format
要使用此插件,请按照以下步骤操作(适用于React-js)
import moment from 'moment';
import momentDurationFormatSetup from "moment-duration-format";
var time = moment.duration(value,unit).format('hh:mm:ss',{trim:false})
注意:我已经使用{trim:false}作为额外的参数,因此一开始它不会删掉额外的0。如果您希望使用“ 11:30”而不是“ 00:11:30”,则可以忽略它。
答案 10 :(得分:0)
function durationAsString(ms, maxPrecission = 3) {
const duration = moment.duration(ms)
const items = []
items.push({ timeUnit: 'd', value: Math.floor(duration.asDays()) })
items.push({ timeUnit: 'h', value: duration.hours() })
items.push({ timeUnit: 'm', value: duration.minutes() })
items.push({ timeUnit: 's', value: duration.seconds() })
const formattedItems = items.reduce((accumulator, { value, timeUnit }) => {
if (accumulator.length >= maxPrecission || (accumulator.length === 0 && value === 0)) {
return accumulator
}
accumulator.push(`${value}${timeUnit}`)
return accumulator
}, [])
return formattedItems.length !== 0 ? formattedItems.join(' ') : '-'
}
允许您设置最大精度并且不会显示无关紧要的值。 示例:
durationAsString(0)
将返回 -
durationAsString(10000)
将返回 10s
durationAsString(100000)
将返回 1m 40s
durationAsString(10000000)
将返回 2h 46m 40s
durationAsString(100000000)
将返回 1d 3h 46m
durationAsString(100000000, 4)
将返回 1d 3h 46m 40s
答案 11 :(得分:-1)
时刻(' 2000-01-01 00:00:00')。毫秒(XXXXXX)。格式(" HH:mm:ss")
答案 12 :(得分:-2)
非力矩代码
var timeinmilli = 433276000;
var milliseconds = timeinmilli%1000;
var seconds = parseInt(timeinmilli=timeinmilli/1000)%60;
var minutes = parseInt(timeinmilli=timeinmilli/60)%60;
var hours = parseInt(timeinmilli=timeinmilli/60)%24;
var days = parseInt(timeinmilli=timeinmilli/24);
document.body.innerHTML = [days, hours, minutes, seconds, milliseconds].join(":");