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

how to get time difference in minutes in rails for two date time fields?

我想计算两个日期时间字段之间的时间差(以分钟为单位),如创建时间字段和更新时间字段。我想要这样的结果

这些时间都出现在印度的时区。我怎样才能在铁路上做到这一点?

1
2
3
4
created = article.created_at
updated = article.updated_at

minutes = updated - created


此解决方案适用于使用created_atupdated_atTimeWithZone类的ActiveRecord模型。

1
2
3
4
created = article.created_at
updated = article.updated_at

minutes = (updated - created) / 1.minutes


由于created_atupdated_atDateTime型的,这应该是有效的。

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

说明:

减去两个日期时间返回以天为单位的已用时间。在下面的示例中,e-d将返回(28807336643183/28800000000000)。所以要把它转换成分钟,我们需要用24*60乘以它(因为一天有24小时,每小时有60分钟)。

示例(已测试):

1
2
3
4
5
6
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


看着助手time_ago_in_words我们可以说:

1
2
3
4
5
    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


这就是我使用的方法,它只需要为您处理几天或几分钟的时间,并为您提供差异time_ago_in_words只需传递一个日期时间、日期或时间对象,它将返回人类可读的差异。埃多克斯1〔10〕