我有以下Rails帮助器将毫秒转换为小时和分钟:
def get_duration_hrs_and_mins(duration)
hours = duration / (3600000 * 3600000)
minutes = (duration / 60000) % 60000
"#{hours}h #{minutes}m"
rescue
""
end
然而,它总是在几分钟内(例如364米)返回它并且不显示小时数...并且将分钟保持在60以下。
答案 0 :(得分:5)
您在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
答案 1 :(得分:4)
你的计算结束了:
要获得(完整)小时数,您必须将毫秒数除以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
值。