
[英]Convert duration to hours:minutes:seconds (or similar) in Rails 3 or Ruby
[英]ActiveSupport::Duration hours/minutes/seconds is always seconds?
如果我有一个ActiveSupport::Duration
并调用小时/分钟/秒,它总是返回秒数:
(8.hours + 1.second).parts
=> {:hours=>8, :seconds=>1}
(8.hours + 1.second).seconds
=> 28801 seconds
(8.hours + 1.second).hours
=> 28801 hours
这是预期的行为吗? 如果是,为什么? :)
看起来像一个错误。
我已经搜索了一些与此相关的已报告错误,但没有与此相关的错误。
最接近的是这个,但不一样。
https://github.com/rails/rails/issues/37450
请以这种格式创建一个问题
这里发生的事情是(8.hours + 1.second)
在用于构造新的ActiveSupport::Duration
之前被隐式转换为 integer 。
# https://github.com/rails/rails/blob/b2eb1d1c55a59fee1e6c4cba7030d8ceb524267c/activesupport/lib/active_support/duration.rb#L158
def hours(value) #:nodoc:
new(value * SECONDS_PER_HOUR, [[:hours, value]])
end
是的,没有。 没关系。 无论如何,这不是该方法的预期用途。 它没有在任何地方记录为从持续时间中提取部分或将一种格式转换为另一种格式的方法。 它只是一个方便的构造函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.