Ruby 在 Rails - 日期时间范围问题
Ruby On Rails - Datetime Range issue
使用 API,我可以从网站检索订单列表。
在此列表中,我有每个订单的提交日期。
我需要过滤此列表以查找特定范围内的订单,但使用我的日期范围 "bad value for range"
这是 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 之前,必须更改代码以填充整个星期二!!但我可以在之后做!
您尝试使用不适用于 select
方法的活动记录符号。像这样的东西应该有用。
@ele_ordini = ele_ordini.select do |ordine|
tmp = ordine['date_created'].to_datetime
tmp >= lunedi.to_datetime && tmp <= martedi.to_datetime
end
如果您只关心比较日期(并且您正在使用 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(星期二)
添加变量时需要注明时间单位。试试这个
@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'] }
使用 API,我可以从网站检索订单列表。
在此列表中,我有每个订单的提交日期。
我需要过滤此列表以查找特定范围内的订单,但使用我的日期范围 "bad value for range"
这是 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 之前,必须更改代码以填充整个星期二!!但我可以在之后做!
您尝试使用不适用于 select
方法的活动记录符号。像这样的东西应该有用。
@ele_ordini = ele_ordini.select do |ordine|
tmp = ordine['date_created'].to_datetime
tmp >= lunedi.to_datetime && tmp <= martedi.to_datetime
end
如果您只关心比较日期(并且您正在使用 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(星期二)
添加变量时需要注明时间单位。试试这个
@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'] }