如何在 rails 中获取两个日期时间字段的时差(以分钟为单位)?
how to get time difference in minutes in rails for two date time fields?
我想计算两个 date_time fields.like created_at 和 updated_at 类型字段之间的时间差(以分钟为单位)。我想要这样的结果 updated_at - created_at = some minutes.
这些时间位于印度时区。我怎样才能在 rails 中做到这一点?
created = article.created_at
updated = article.updated_at
minutes = updated - created
由于 created_at
和 updated_at
属于 DateTime
类型,这应该有效。
created = article.created_at
updated = article.updated_at
minutes = ((updated - created) * 24 * 60).to_i
解释:
减去两个 DateTimes returns the elapsed time in days。在下面的示例中,e-d
将 return (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
此解决方案适用于对 created_at
和 updated_at
使用 TimeWithZone
类 的 ActiveRecord 模型。
created = article.created_at
updated = article.updated_at
minutes = (updated - created) / 1.minutes
这就是我使用的,它只为您处理天数或分钟数,并为您提供差异 time_ago_in_words
只需传递日期时间、日期或时间对象,它将 return人类可读的差异。 time_ago_in_words(@post.created_at)
查看助手 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
我想计算两个 date_time fields.like created_at 和 updated_at 类型字段之间的时间差(以分钟为单位)。我想要这样的结果 updated_at - created_at = some minutes.
这些时间位于印度时区。我怎样才能在 rails 中做到这一点?
created = article.created_at
updated = article.updated_at
minutes = updated - created
由于 created_at
和 updated_at
属于 DateTime
类型,这应该有效。
created = article.created_at
updated = article.updated_at
minutes = ((updated - created) * 24 * 60).to_i
解释:
减去两个 DateTimes returns the elapsed time in days。在下面的示例中,e-d
将 return (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
此解决方案适用于对 created_at
和 updated_at
使用 TimeWithZone
类 的 ActiveRecord 模型。
created = article.created_at
updated = article.updated_at
minutes = (updated - created) / 1.minutes
这就是我使用的,它只为您处理天数或分钟数,并为您提供差异 time_ago_in_words
只需传递日期时间、日期或时间对象,它将 return人类可读的差异。 time_ago_in_words(@post.created_at)
查看助手 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