帮助Ruby Date Compare

时间:2010-04-14 20:37:59

标签: ruby-on-rails ruby

是的,我已经多次阅读并完成了Google,但我仍然无法让这个工作......也许我是个白痴:)

我有一个使用门票的系统。开始日期是时间戳中的“created_at”。每张票在“created_at”后7天关闭。在模型中,我正在使用:

def closes
  (self.created_at + 7.days)
end

我正在尝试创建另一种方法,该方法将“关闭”并将其返回为故障单关闭前剩余的天数,小时数,分钟数和秒数。有人想帮助和/或告诫我的技能吗? ;)

编辑:

理想情况下,我希望最终输出类似于“6d14h22s”之类的东西。

2 个答案:

答案 0 :(得分:2)

使用distance_of_time_in_words辅助方法:

class Ticket < ActiveRecord::Base
  include ActionView::Helpers::DateHelper

  def closes_in_words
    distance_of_time_in_words(Time.now, self.closes)
  end
end

答案 1 :(得分:1)

我不知道使用rails任意格式化持续时间的任何好方法,但你可以自己这样做:

def closes_in
  minutes = (Time.now - closes).to_i / 60
  days = minutes / (24*60)
  minutes -= days * 24*60
  hours = minutes / 60
  minutes -= hours * 60
  "#{days}d#{hours}h#{minutes}m"
end