我的总秒数为125557
当我尝试使用
将秒转换为“H:M:S”时Time.at(125557).utc.strftime("%H:%M:%S")
它与10:52:37
但我想要34:52:37
(在10:52:37添加一天)
答案 0 :(得分:6)
好吧,鉴于34:52:37
不是一个有效的时间字符串,为此使用时间解析/转换库是没有意义的。最好手动计算。 div
和mod
是您最好的朋友。看看:
secs = 125557
secs_in_an_hour = 3600
hours, secs = secs.divmod(secs_in_an_hour)
hours # => 34
secs # => 3157 # This now contains only minutes and seconds, no full hours
将此演变为完整的解决方案应该非常容易。
答案 1 :(得分:2)
试试这个
total_seconds = 125557
seconds = total_seconds % 60
minutes = (total_seconds / 60) % 60
hours = total_seconds / (60 * 60)
format("%02d:%02d:%02d", hours, minutes, seconds)
答案 2 :(得分:0)
如果您想更轻松地处理数周,日,小时,分钟和秒钟,可以尝试使用ruby-duration gem。
d = Duration.new(125557)
=> #<Duration:0x007f84180758e8 @days=1, @hours=10, @minutes=52, @negative=false, @seconds=37, @total=125557, @weeks=0>
d.total_hours
=> 34
d.total_minutes
=> 2092
答案 3 :(得分:0)
我在这里https://stackoverflow.com/a/62562658/2970582发布了答案
ActiveSupport::Duration
+ inspect
为您提供有效的结果
答案 4 :(得分:0)
自 Rails 6.1.0 起,您可以执行以下操作:
1.day.in_hours # => 24.0
3600.seconds.in_hours # => 1.0
文档:https://api.rubyonrails.org/classes/ActiveSupport/Duration.html#method-i-in_hours