3

我有以下方法可以将持续时间以秒为单位转换为小时。例如,2 小时半将产生 2.30,另外,2 小时 15 分钟将产生 2.15。所以它输出小时数和分钟数。

我想修改方法以显示 2.5 或 2.25 而不是上面的。我需要这样做才能进行计算。例如,如果有 30 美元/小时的工资并且员工工作了 10 个半小时,我需要乘以30*10.5而不是30*10.30.

def hour_quantity
  unless self.duration.blank?
    hours = (self.duration/60)/60
    minutes = (self.duration/60) % 60
    hours.to_s + '.' + minutes.to_s
  end
end
4

2 回答 2

6

像往常一样,乔恩是正确的。只需使用浮点除法:

def hour_quantity
  duration / 3600.0
end

显示时,您可能需要四舍五入:

puts '%.2f' % hour_quantity

这将始终为您提供 2 个小数位(例如“2.00”、“2.25”、“2.50”)。或者:

  puts '%g' % hour_quantity
  puts '%g' % 2.0           #=> "2"
  puts '%g' % 2.25          #=> "2.25"
  puts '%g' % 2.4999999     #=> "2.5"
于 2012-04-27T22:10:39.193 回答
0

Rails 6.1.0开始,您可以:

1800.seconds.in_hours # => 0.5
15.minutes.in_hours # => 0.25

这些是新引入的方法:in_secondsin_minutesin_hoursin_daysin_weeksin_monthsin_years

于 2020-12-17T11:12:55.387 回答