所以我有一个数字,例如90
。我要做的是将其转换为"1 hr 30 mins"
。我已经试过了:
moment.utc(
moment.duration(90, "minutes")
.asMilliseconds()
).format("h:mm")
这将返回1:30
。
如果这样做,
moment.utc(
moment.duration(90, "minutes")
.asMilliseconds()
).format("h [hour] mm [minutes]")
,然后我得到1 hour 30 minutes
。
这很好,但是如果我插入180,则得到3 hour 00 minutes
,但应该是3 hours
。当小时数大于1时,应省略00分钟,hour应为hours。分钟也是如此。
moment.js是否可能?
您可以编写一些自定义代码来解决此问题,如下所示:
const time1 = moment.utc(
moment.duration(180, "minutes")
.asMilliseconds()
)
const time2 = moment.utc(
moment.duration(90, "minutes")
.asMilliseconds()
)
function formatTime(time) {
const minutes = time.minutes();
const hours = time.hours();
const hourFormatStr = hours === 1 ? 'hour' : 'hours';
const minuteFormatStr = minutes === 1 ? 'minute' : 'minutes';
if (!time.minutes()) {
return time.format(`h [${hourFormatStr}]`);
}
return time.format(`h [${hourFormatStr}] mm [${minuteFormatStr}]`);
}
console.log(formatTime(time1));
console.log(formatTime(time2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
而且,我还找到了this library,它似乎可以完成您想要的工作。
我认为使用momemt js不可能。
我们必须根据所获得的小时和分钟值动态构建格式。请检查下面的代码。
input=180;
hour=Math.floor(input/60);
min=input%60;
format = "";
//console.log(hour);
//console.log(min);
if (hour>1 && min>1)
format = "h [hours] mm [minutes]";
else if (hour>1 && min==1)
format = "h [hours] mm [minute]";
else if (hour>1 && min==0)
format = "h [hours]";
else if( hour==0 && min>1)
format = "m [minutes]";
else if (hour==0 && min<=1)
format = "mm [minute]";
else
format="";
//console.log(format);
moment.utc(
moment.duration(input, "minutes")
.asMilliseconds()
).format(format)