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秒"
浙公网安备 33010602011771号