我想计算两个date_time字段之间的时间差,以分钟为单位。比如created_at和updated_at种类的字段。我想要这样的结果updated_at - created_at = some minutes.
这些时间出现在印度的时区。我怎么能在铁轨上做到这一点?
created = article.created_at
updated = article.updated_at
minutes = updated - created
答案 0 :(得分:13)
此解决方案适用于使用TimeWithZone
和created_at
的{{1}}类的ActiveRecord模型。
updated_at
答案 1 :(得分:8)
由于created_at
和updated_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