首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用红宝石将毫秒转换为小时和分钟

用红宝石将毫秒转换为小时和分钟
EN

Stack Overflow用户
提问于 2016-11-08 11:32:17
回答 2查看 6K关注 0票数 0

我有以下Rails助手可以将毫秒转换为小时和分钟:

代码语言:javascript
复制
def get_duration_hrs_and_mins(duration)
  hours = duration / (3600000 * 3600000)
  minutes = (duration / 60000) % 60000
  "#{hours}h #{minutes}m" 
rescue
  ""
end

然而,它总是在几分钟内返回(例如364米),不显示时间.把会议记录控制在60分钟以下。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-08 11:47:06

您错误地计算了1小时1分钟内的毫秒数。尝试以下几点:

代码语言:javascript
复制
def get_duration_hrs_and_mins(duration)
  hours = duration / (1000 * 60 * 60)
  minutes = duration / (1000 * 60) % 60
  "#{hours}h #{minutes}m" 
rescue
  ""
end
票数 6
EN

Stack Overflow用户

发布于 2016-11-08 13:24:41

你的计算失败了:

  • 一秒钟有1000毫秒
  • 一分钟有1000×60毫秒
  • 一小时有1000×60×60毫秒

要获得(满)小时数,必须将毫秒数除以1000×60×60。剩下的可以用类似的方式计算分钟数。

这就是divmod的目的:

代码语言:javascript
复制
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值。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40485828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档