2016-03-16 129 views
4

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

例如, 如果分钟是480,它应该显示输出为08:00 AM。 如果分钟1080应该显示输出06:00下午

+0

你已经试过了什么? –

+0

这算不算算吗? – Stewart

+0

我不知道如何使用它 – user1268130

回答

6

你可以做基本的算术像这样:

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" 
9

假设你总是希望从午夜加分,最容易的事情do是:

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:00。考虑一下你的问题。 DST错误可能是现在。

相关问题