我有以下Rails助手可以将毫秒转换为小时和分钟:
def get_duration_hrs_and_mins(duration)
hours = duration / (3600000 * 3600000)
minutes = (duration / 60000) % 60000
"#{hours}h #{minutes}m"
rescue
""
end然而,它总是在几分钟内返回(例如364米),不显示时间.把会议记录控制在60分钟以下。
发布于 2016-11-08 11:47:06
您错误地计算了1小时1分钟内的毫秒数。尝试以下几点:
def get_duration_hrs_and_mins(duration)
hours = duration / (1000 * 60 * 60)
minutes = duration / (1000 * 60) % 60
"#{hours}h #{minutes}m"
rescue
""
end发布于 2016-11-08 13:24:41
你的计算失败了:
要获得(满)小时数,必须将毫秒数除以1000×60×60。剩下的可以用类似的方式计算分钟数。
这就是divmod的目的:
def get_duration_hrs_and_mins(milliseconds)
return '' unless milliseconds
hours, milliseconds = milliseconds.divmod(1000 * 60 * 60)
minutes, milliseconds = milliseconds.divmod(1000 * 60)
seconds, milliseconds = milliseconds.divmod(1000)
"#{hours}h #{minutes}m #{seconds}s #{milliseconds}ms"
end
get_duration_hrs_and_mins(123456789)
#=> "34h 17m 36s 789ms"为了演示目的,我在输出中添加了秒和毫秒。我还将rescue块替换为一个nil子句,假设您想要处理nil值。
https://stackoverflow.com/questions/40485828
复制相似问题