工作中有时候会碰到需要把数值展示成比较直观的时间差格式,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秒"