仅使用Ruby内置函数将秒转换为小时-天除外

Rub*_*ist 3 ruby datetime ruby-on-rails ruby-on-rails-4

在Rails中,我试图将秒仅转换为小时。但是巧合的是,功能还提供了其他东西。

For example - Second = 164580
Output like : 45:43:0
Run Code Online (Sandbox Code Playgroud)

在间隔24小时后,它也会转换为一天。我正在尝试使用任何Ruby内置函数来仅获取总时数。

hat*_*enn 6

您可以使用以下简单方法:

def seconds_to_hours(seconds)
  seconds / 3600
end
Run Code Online (Sandbox Code Playgroud)

一分钟有60秒,一小时有60分钟。因此,如果将秒除以60*60,即3600,然后将其四舍五入,您将得到小时。


小智 5

如果您只想显示小时作为输出,您可以使用此功能:

Time.at(236).utc.strftime "%H"
Run Code Online (Sandbox Code Playgroud)

值“%H:%M:%S”代表时:分:秒

您可以在此处阅读更多相关信息:http : //apidock.com/rails/ActiveSupport/TimeWithZone/strftime

除此之外 - 功能时间仅限于 24 小时。所以你不能计算超过这个值。


Mar*_*mas 5

现在,我知道了您要寻找的东西,我提供了:

def seconds_to_hms(sec)
  [sec / 3600, sec / 60 % 60, sec % 60].map{|t| t.to_s.rjust(2,'0')}.join(':')
end
Run Code Online (Sandbox Code Playgroud)

编辑:另一个选择,甚至更简洁:

def seconds_to_hms(sec)
  "%02d:%02d:%02d" % [sec / 3600, sec / 60 % 60, sec % 60]
end
Run Code Online (Sandbox Code Playgroud)

样品输出;

seconds_to_hms(164580)
=> "45:43:00"
Run Code Online (Sandbox Code Playgroud)