ruby中将数字转化为字符串格式时差

 

 
工作中有时候会碰到需要把数值展示成比较直观的时间差格式,divmod方法很适合做这个操作。
 
divmod
#输出商和余数的数组    60.divmod(50) #=> [1, 10]
fdiv
#输出浮点数   5.fdiv(2)   #=> 2.5
abs
#输出绝对值  (-1).abs #=> 1
floor
#返回小于或等于该数字的最大整数   2.3.floor  #=> 2     -2.3.floor   #=> -3

 

class Numeric
  def duration_as_str
    rest, secs = self.divmod( 60 )
    rest, mins = rest.divmod( 60 )
    days, hours = rest.divmod( 24 )
    result = []
    result << "#{days}天" if days > 0
    result << "#{hours}小时" if hours > 0
    result << "#{mins}分" if mins > 0
    result << "#{secs}秒" if secs > 0
    result.blank? ? "1秒" : result.join(' ')

  end
end

57423.duration_as_str
=> "15小时 57分 3秒"

 

 

posted @ 2018-01-03 11:27  小芬喵  阅读(226)  评论(0)    收藏  举报