Ruby On Rails - 日期时间范围问题

时间:2017-03-08 13:08:41

标签: ruby-on-rails ruby date-range

使用API​​,我可以从网站检索订单列表。

在此列表中,我有每个订单,即演示日期。

我需要根据特定范围内的订单过滤此列表,但使用日期范围我有“范围错误值”

这是API如何呈现日期:

"date_created"=>"2017-03-08T11:22:00"

这是我的代码

@lunedi = Date.today.at_beginning_of_week
@martedi = Date.today.at_beginning_of_week + 1
ele_ordini = woocommerce.get("orders").parsed_response
@ele_ordini = ele_ordini.select { |ordine| ordine['date_created'] == lunedi.to_datetime..martedi.to_datetime }

我的目标是过滤本周的订单,仅在周一和周二

是的,代码必须在周二至周二23:59更改!但我可以在以后做到!

3 个答案:

答案 0 :(得分:2)

您尝试使用不使用select方法的有效记录表示法。这样的事情应该有效。

@ele_ordini = ele_ordini.select do |ordine| 
  tmp = ordine['date_created'].to_datetime
  tmp >= lunedi.to_datetime && tmp <= martedi.to_datetime
end

答案 1 :(得分:0)

如果您只关心比较日期(并且您使用Rails - 它看起来像你),那么您可以稍微简化一下。例如:

@lunedi = Date.today.at_beginning_of_week
ele_ordini = woocommerce.get("orders").parsed_response
@ele_ordini = ele_ordini.select { |ordine| ordine['date_created'].to_date - @lunedi < 2 }

即。您只查看每个日期和星期一之间的天数差异,并选择0(星期一)或1(星期二)的任何内容

答案 2 :(得分:0)

将变量添加到变量时,需要说明时间单位。试试这个

@lunedi = Date.today.at_beginning_of_week
@martedi = Date.today.at_beginning_of_week + 1.day
ele_ordini = woocommerce.get("orders").parsed_response
@ele_ordini = ele_ordini.select { |ordine| (lunedi..martedi).include? ordine['date_created'] }