我需要得到DD的时间值:hh:mm:ss到秒。值是postgresql db查询的输出,看起来像这样:
db_value = '456:14:56:10'
我需要把它变成几秒钟,我的应用程序中有一个方法,反之亦然:
def time_converter(seconds)
days = seconds / 86400
seconds -= days * 86400
hours = seconds / 3600
seconds -= hours * 3600
minutes = seconds / 60
seconds -= minutes * 60
return "#{days}:#{hours}:#{minutes}:#{seconds}"
我可以以某种方式使用此方法,还是可以将postgresql中的格式更改为秒?最有效的方法是什么?
db值是SUM((end_time - start_time)*乘数)AS持续时间查询的一部分。
答案 0 :(得分:2)
你没有说明你使用的是哪个版本的红宝石,所以我假设现代的东西。这应该适用于1.9.3或更高版本。这也假定您总是存在所有4个字段。无论如何它应该给你一些想法。
> db_value = '456:14:56:10'
=> "456:14:56:10"
> units = %w{days hours minutes seconds}
=> ["days", "hours", "minutes", "seconds"]
> db_value.split(":").map.with_index{|x,i| x.to_i.send(units[i])}.reduce(:+).to_i
=> 39452170