我需要根据用户时区(EST)进行查询,目前正在使用UTC。我根据相应的结果显示日期范围过滤器,用户根据该过滤器选择日期范围。
我使用ransack gem进行搜索
日期范围 - 2016-03-01至2016-03-31
结果显示在UTS中,显示为2月29日,不应出现
表单看起来像
.well
= simple_form_for(:report, url: report_create_path, method: :get, html: { class: 'form-horizontal'}) do |f|
= f.simple_fields_for(:q) do |r|
= r.input :created_at_gteq, label: 'From', required: false, as: :bootstrap_datepicker
= r.input :created_at_lteq, label: 'To', required: false, as: :bootstrap_datepicker
我是否需要在此处使用偏移量,或者任何默认的ransack默认方法都提供此功能?
答案 0 :(得分:0)
这就是我在项目中使用的内容。它没有使用ransack
gem,而是使用MongoDB
代替postgresql
,但它仍然适用于您的项目:
start_date = DateTime.strptime(params[:created_at_gteq], "%m/%d/%Y").change(offset: Time.zone.formatted_offset).utc
end_date = DateTime.strptime(params[:created_at_lteq], "%m/%d/%Y").change(offset: Time.zone.formatted_offset).end_of_day.utc
现在,在我的数据库中,它始终以datetime
格式存储。不确定它是否在您的数据库中。如果没有,则删除行末尾的.utc
以将其转换为UTC。