任何人都可以告诉我如何使用moment.js将分钟转换为小时,并以hh:mm A格式显示。
例如, 如果分钟为480,则应显示输出为08:00 AM。 如果分钟为1080,则应显示输出为06:00 PM
答案 0 :(得分:19)
假设您总是希望从午夜添加分钟,最简单的方法是:
moment.utc().startOf('day').add(480, 'minutes').format('hh:mm A')
UTC的使用避免了夏令时转换的问题,这会导致时间根据相关日期的不同而变化。
如果你真的想要在某一天午夜之后的分钟数,包括DST转换,请取出utc并使用:
moment().startOf('day').add(480, 'minutes').format('hh:mm A')
请注意,已接受的答案可能存在DST过渡问题。例如,如果你在美国的一部分观察DST:
moment('2016-03-13').hours(2).minutes(30).format('hh:mm A')
"03:30 AM"
结果不符合预期,并且会根据浏览器在返回时间和小时或前进一小时之间变化。
编辑:原始答案已更新以修复错误。作为一个额外的评论,我会非常怀疑任何试图将一些分钟映射到民用时间的代码。底线是,当天480分钟并不总是上午8点。在您的问题的背景下考虑这一点。 DST错误现在很可能。
答案 1 :(得分:10)
您可以像这样执行基本算术:
function getTimeFromMins(mins) {
// do not include the first validation check if you want, for example,
// getTimeFromMins(1530) to equal getTimeFromMins(90) (i.e. mins rollover)
if (mins >= 24 * 60 || mins < 0) {
throw new RangeError("Valid input should be greater than or equal to 0 and less than 1440.");
}
var h = mins / 60 | 0,
m = mins % 60 | 0;
return moment.utc().hours(h).minutes(m).format("hh:mm A");
}
getTimeFromMins(480); // returns "08:00 AM"
getTimeFromMins(520); // returns "08:40 AM"
getTimeFromMins(1080); // returns "06:00 PM"