没读研的火柴 · java 读取音频/视频 ...· 1 年前 · |
眉毛粗的电梯 · vba数据类型,运算符,内置函数,循环判断语 ...· 1 年前 · |
失落的瀑布 · Android OpenGL ES ...· 1 年前 · |
焦虑的面包 · 中兴通讯SPTN助力ODL开源扩展应用_通信世界网· 1 年前 · |
爽快的可乐 · Flutter笔记(二)_flutter ...· 1 年前 · |
我是Momentjs的新手。我正在尝试使用它将毫秒转换为小时和分钟。在下面,x是毫秒
x = 433276000
var y = moment.duration(x, 'milliseconds').asHours;
有人能帮上忙吗?
这似乎是不受支持的 per this SO 。在 this github issue 之后,有一个您可能能够使用的 moment-to-countdown plugin 。
但是看起来你可能首先需要 Countdown.js 来做这件事。
countdown(0, 433276000, countdown.HOURS | countdown.MINUTES).toString();
请注意,这并没有考虑到闰秒,或者说是leap,因为它固定到了Unix纪元(所以它不是一个纯时间间隔)。
使用 moment-duration-format plugin
moment.duration(ms).format("h:mm")
您可以使用 moment.utc() 创建以毫秒为单位的Moment.js日期。
var milliseconds = 1000;
moment.utc(milliseconds).format('HH:mm');
在Moment.js duration中,如果您希望Math.trunc超过24小时,您可以只使用数小时。hh:mm:ss格式。
var seconds = moment.duration(value).seconds();
var minutes = moment.duration(value).minutes();
var hours = Math.trunc(moment.duration(value).asHours());
点击这里查看: https://codepen.io/brickgale/pen/mWqKJv?editors=1011
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”,你可以省略它。
下面是一个函数,可以将其格式化为字符串。
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(', ');
}
然后只需调用返回
40 mins, 43 secs, 253 ms
的
ms_to_str(2443253)
即可。
如果不需要显示毫秒,只需注释掉
ms: tempTime.milliseconds().toString().padStart(3, '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