如何使用moment.js将分钟转换为小时

时间:2016-03-16 12:23:55

标签: javascript momentjs

任何人都可以告诉我如何使用moment.js将分钟转换为小时,并以hh:mm A格式显示。

例如, 如果分钟为480,则应显示输出为08:00 AM。 如果分钟为1080,则应显示输出为06:00 PM

2 个答案:

答案 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"