【问题标题】:convert time DD:hh:mm:ss format into seconds in Rails 3在 Rails 3 中将时间 DD:hh:mm:ss 格式转换为秒
【发布时间】:2013-09-09 16:36:02
【问题描述】:

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

【问题讨论】:

  • 在 PostgreSQL 中,您可以轻松地从间隔中获取秒数(我希望间隔是您查询的结果类型):select extract(EPOCH from Now() - '2013-01-01 14:05:05'::timestamp)

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


【解决方案1】:

您没有说明您使用的是哪个版本的 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​​1.9.3,这正是我所需要的!非常感谢。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-27
  • 2021-12-12
  • 2019-03-04
  • 2023-03-23
  • 2019-07-04
  • 2023-03-03
相关资源
最近更新 更多