ruby-on-rails - 从不同实例中查找时间总和

标签 ruby-on-rails ruby datetime aggregate

我有一个名为 WorkInterval 的模型,它的记录基本上包含:

start_date, end_date

我希望能够获得特定任务的所有 WorkIntervals(我知道如何处理关联)并获得花费的总时间。因此,对所有实例的 end_date 和 start_date(end_date - start_date)之间的所有差异进行聚合(加法)。

现在我可以这样做:

@task.work_intervals -> 这给了我所有的 work_intervals,但我怎样才能以一种干净的 ruby​​ 方式获得在该任务上花费的时间总和?

注意事项:
1 - end_date 和 start_date 都是 DateTime
2 - 某些实例的结束日期可能为 NIL,如果是这种情况,则应采用当前日期时间。

最佳答案

@task.work_intervals
.map {|i| (i.end_date || Time.now).to_time - i.start_date.to_time }
.reduce(:+)
# => total in seconds

关于ruby-on-rails - 从不同实例中查找时间总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15955097/

相关文章:

ruby-on-rails - 在 Rails 中提供当前日期

Ruby - 将具有管道分隔值的数组转换为哈希数组

c# - 用于将 .net Web 服务反序列化为 DateTime() 的 Java JSONObject

Javascript:将日期时间转换为 DD/MM/YYYY - 时间?

mysql - 根据 :user_id and then merge into 1 对 2 个 ActiveRecord 数组进行排序

mysql - 使用 bootstrap-datepicker-rails,现在我的日期是字符串,但我需要将其作为日期保存到数据库

ruby-on-rails - Ruby 中 lambda 和 -> 运算符的区别

r - 从R中的日期时间提取日期的最快方法

ruby-on-rails - bundler 如何工作?

ruby-on-rails - rspec 测试中的未定义方法