我需要将 DD:hh:mm:ss 的时间值转换为秒。值是 postgresql 数据库查询的输出,如下所示:
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)* multiplier) AS 持续时间查询的一部分。
最佳答案
您没有说明您使用的是哪个版本的 ruby,所以我假设是现代的。这应该适用于 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
关于ruby-on-rails - 转换时间DD :hh:mm:ss format into seconds in Rails 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18702907/