如何在两个日期时间字段的rails中获得几分钟的时差?

时间:2015-06-20 10:49:30

标签: ruby-on-rails time difference

我想计算两个date_time字段之间的时间差,以分钟为单位。比如created_at和updated_at种类的字段。我想要这样的结果updated_at - created_at = some minutes.

这些时间出现在印度的时区。我怎么能在铁轨上做到这一点?

created = article.created_at
updated = article.updated_at

minutes = updated - created

4 个答案:

答案 0 :(得分:13)

此解决方案适用于使用TimeWithZonecreated_at的{​​{1}}类的ActiveRecord模型。

updated_at

答案 1 :(得分:8)

由于created_atupdated_at的类型为DateTime,这应该可以。

created = article.created_at
updated = article.updated_at
minutes = ((updated - created) * 24 * 60).to_i

<强> 说明:

减去两个DateTimes返回 the elapsed time in days 。在下面的示例中,e-d将返回(28807336643183/28800000000000)。因此,要将其转换为分钟,我们需要乘以24*60(因为当天有24小时,每小时有60分钟)

<强> 实施例(测试):

d = DateTime.now
 => Tue, 13 Jun 2017 10:21:59 +0530 
2.3.3 :003 > e = DateTime.now + 1.day
 => Wed, 14 Jun 2017 10:22:21 +0530
g = ((e-d) * 24 * 60).to_i
 => 1440

答案 2 :(得分:0)

这就是我所使用的,它只是照顾你的日子或分钟,并为你提供差异time_ago_in_words只需传递一个日期时间,日期或时间对象,它将返回差异这是人类可读的。 time_ago_in_words(@post.created_at)

答案 3 :(得分:0)

看着助手time_ago_in_words,我们可以说:

    from_time = from_time.to_time if from_time.respond_to?(:to_time)
    to_time = to_time.to_time if to_time.respond_to?(:to_time)
    #absolute distance:
    from_time, to_time = to_time, from_time if from_time > to_time
    distance_in_minutes = ((to_time - from_time)/60.0).round