ruby-on-rails - 转换时间DD :hh:mm:ss format into seconds in Rails 3

标签 ruby-on-rails postgresql ruby-on-rails-3.2 ruby-1.9.3 time-format

我需要将 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/

相关文章:

ruby-on-rails - OpenSSL 导致 Windows 上的 Rails 启动时间非常慢

ruby-on-rails - 使用 simple_form 更改默认错误消息

ruby-on-rails-3 - 在这样的 Controller 操作中使用 respond_to block 有什么问题吗?

django - 设置 Django Postgres 数据库

sql - 使用单个查询聚合两个不同的事件表

heroku - 设计在本地工作但不在heroku上工作

android - 保护 REST API 供 Android 客户端使用

ruby-on-rails - 命名空间 Controller ,无需命名空间路由助手

jquery - 为什么 ruby​​ on rails 返回 null 而不是 json 对象

javascript - Sequelize PostgreSQL : query to see if string is within an array