2016-04-01 34 views
0

我需要根据用户时区(EST)进行查询,目前它需要UTC。我有一个日期范围过滤器,用户根据该过滤器选择日期范围,根据相应的结果显示。基于用户时区的Rails查询

我使用洗劫的宝石搜索

日期范围 - 2016年3月1日至2016年3月31日

结果显示在UTS,这表明为2月29日这不应该出现

enter image description here

形式如下

.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 

我是否需要在这里使用偏移量或任何默认的搜索默认方法提供此功能?

回答

0

这是我在我的项目中使用的。它没有采用ransack宝石,它使用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 

,在我的数据库,它总是存储在UTC的datetime。不知道它是否在你的数据库中。如果不是,则在行末尾删除.utc以不将其转换为UTC。