以天,小时和分钟计算时间差

时间:2011-08-04 14:57:32

标签: ruby-on-rails-3 time

更新:我正在更新问题以反映完整的解决方案。使用下面提到的time_diff gem Brett,下面的代码可以使用。

代码:

cur_time = Time.now.strftime('%Y-%m-%d %H:%M')
Time.diff(Time.parse('2011-08-12 09:00'), Time.parse(cur_time))

谢谢,布雷特。

2 个答案:

答案 0 :(得分:14)

不使用外部gem,您可以使用以下方法轻松获得日期之间的差异:

def release(time)
  delta = time - Time.now

  %w[days hours minutes].collect do |step|
    seconds = 1.send(step)
    (delta / seconds).to_i.tap do
      delta %= seconds
    end
  end
end

release(("2011-08-12 09:00:00").to_time)
# => [7, 17, 37]

将返回一系列天,小时和分钟,并且可以轻松扩展到包括年,月和秒:

def release(time)
  delta = time - Time.now

  %w[years months days hours minutes seconds].collect do |step|
    seconds = 1.send(step)
    (delta / seconds).to_i.tap do
      delta %= seconds
    end
  end
end

release(("2011-08-12 09:00:00").to_time)
# => [0, 0, 7, 17, 38, 13]

答案 1 :(得分:8)

我以前很容易使用time_diff来实现这类工作,你可能想看一下。