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

Joh*_*ohn 6 time ruby-on-rails difference

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

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

created = article.created_at
updated = article.updated_at

minutes = updated - created
Run Code Online (Sandbox Code Playgroud)

Dou*_*oug 16

此解决方案适用于使用和的TimeWithZone类的ActiveRecord模型.created_atupdated_at

created = article.created_at
updated = article.updated_at

minutes = (updated - created) / 1.minutes
Run Code Online (Sandbox Code Playgroud)


Pav*_*van 9

作为created_atupdated_at类型DateTime,这应该工作.

created = article.created_at
updated = article.updated_at
minutes = ((updated - created) * 24 * 60).to_i
Run Code Online (Sandbox Code Playgroud)

说明:

减去两个DateTimes将返回以天为单位的已用时间.在下面的例子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
Run Code Online (Sandbox Code Playgroud)

  • 对不起,但这是如何工作的?`更新 - 创建`将给你一个秒的时差,应该除以60给你几分钟.我不知道为什么你把这些秒乘以一天的分钟数...... (3认同)
  • 这个答案是不正确的.我已经把正确的答案[下面](http://stackoverflow.com/questions/30953115/how-to-get-time-difference-in-minutes-in-rails-for-two-date-time-fields/39254215#39254215) (3认同)