【问题标题】:Calculating difference in time between two Time objects计算两个 Time 对象之间的时间差
【发布时间】:2011-10-10 16:51:36
【问题描述】:

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

created = u.created_at
updated = u.updated_at

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

hours = created - updated

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

【问题讨论】:

标签: ruby-on-rails ruby time


【解决方案1】:

这应该可行:

hours = ((created - updated) / 1.hour).round

相关问题:Rails Time difference in hours

【讨论】:

    【解决方案2】:

    另一种选择是使用 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
    • 如果您需要更精确的词,例如“1 年、2 个月、4 小时、5 分钟和 6 秒”,请查看 github.com/doorkeeper/dotiw
    【解决方案3】:

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

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

    【讨论】:

    • 我知道有点晚了 :) 但是创建和更新了。它们是什么格式的?秒?
    猜你喜欢
    • 2016-12-17
    • 2017-03-26
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    相关资源
    最近更新 更多