2

我需要将 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 持续时间查询的一部分。

4

1 回答 1

3

您没有说明您使用的是哪个版本的 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
于 2013-09-09T17:02:12.260 回答