你如何从日期时间中减去?

时间:2010-07-23 00:04:15

标签: ruby-on-rails ruby datetime

我想在几个小时内写一个简单的函数:

自创建以来已经过了多长时间?

我的尝试:

-time = DateTime.now.hour - (self.created_at.hour)

有没有人知道如何在Ruby on Rails中执行此操作?

3 个答案:

答案 0 :(得分:23)

Rails通常使用Time,而非DateTime。你为什么不Time.now - self.created_at?然后你可以通过除以3600将秒数转换为数小时。

答案 1 :(得分:17)

知道了!首先,您必须确保您的数据与从Time或DateTime中减去的数据相同。我选择了时间。然后用Ruby的内置时间方法划分它。这可以转化为多少天,但也可以是1.hour。等

(Time.now - self.created_at.to_time)/1.day

答案 2 :(得分:7)

您正在寻找time_ago_in_words(from_time,include_seconds = false)函数。以下是文档中的一些示例:

time_ago_in_words(3.minutes.from_now)       # => 3 minutes
time_ago_in_words(Time.now - 15.hours)      # => 15 hours
time_ago_in_words(Time.now)                 # => less than a minute
from_time = Time.now - 3.days - 14.minutes - 25.seconds     # => 3 days