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

17

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

created = u.created_at
updated = u.updated_at

我该如何计算两个时间对象之间的小时差?

hours = created - updated

我想将这个功能封装在一个方法中并扩展Time类。我很难相信我需要扩展它,但我似乎找不到一个原生的方法来处理使用不同时间单位计算经过的时间。


请查看TimeDifference gem:https://github.com/tmlee/time_difference - Joshua Pinter
3个回答

46

14

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

<%= distance_of_time_in_words u.created_at, u.updated_at %>

希望您觉得这很有用 :)


如果您需要在未预加载 distance_of_time_in_words 的情况下使用它,例如在控制台中,您可以使用以下代码进行导入:include ActionView::Helpers::DateHelper - Joshua Pinter
如果您需要更精确的词语,例如“1年2个月4小时5分钟和6秒”,请查看https://github.com/doorkeeper/dotiw。 - Joshua Pinter

11

我想使用Rails特有的方法添加另一种答案。Time类有一个名为minus_with_coercion的方法。它比较两个时间并以秒为单位返回结果。

hours=(created.minus_with_coercion(updated)/3600).round

有点晚了 :) 但是已经创建和更新了。它们是什么格式?秒数吗? - Jonathan Clark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接