计算两个Time对象之间的时间差

ker*_*lin 14 ruby time ruby-on-rails

假设我从用户模型中创建了两个时间对象:

created = u.created_at
updated = u.updated_at
Run Code Online (Sandbox Code Playgroud)

如何计算两个时间对象之间的小时数差异?

hours = created - updated
Run Code Online (Sandbox Code Playgroud)

我想将它包装在一个方法中并扩展Time类.我发现很难相信我需要扩展它,但我似乎无法找到一个处理使用不同时间单位计算经过时间的本机方法.

Ste*_*vis 39

这应该工作:

hours = ((created - updated) / 1.hour).round
Run Code Online (Sandbox Code Playgroud)

相关问题:Rails以小时为单位的时差


Sam*_*ega 13

另一种选择是使用distance_of_time_in_words助手:

<%= distance_of_time_in_words u.created_at, u.updated_at %>
Run Code Online (Sandbox Code Playgroud)

希望对你有帮助 :)


小智 10

我想使用特定于rails的方法添加备用答案.Time类有一个名为minus_with_coercion的方法.它比较两次并以秒为单位返回结果.

hours=(created.minus_with_coercion(updated)/3600).round
Run Code Online (Sandbox Code Playgroud)