以UTC

时间:2018-05-22 15:46:23

标签: postgresql datetime ruby-on-rails-5 rails-activerecord

你好我对铁轨上的红宝石很新,所以请对我很轻松。我有一个rails应用程序,它包含一个显示记录的表。我有一个搜索栏,按日期过滤表格的结果。我的搜索栏选择标记看起来像这样

select_tag :date, options_for_select(@previous_summary_history_dates.uniq), prompt: "Search by date", id: "summary-history-date-filter", class: "form-control"

这是控制器中的@previous_summary_history_dates,其中select标签从

获取值
@previous_summary_history_dates = SummarySheet.where(is_history: nil).pluck(:record_inserted_at).map{|a| a.strftime("%m/%d/%Y - %l:%M %p")}.uniq

我已将application.rb文件设置为此

config.time_zone = 'Pacific Time (US & Canada)'
config.active_record.default_timezone = :local

我有一个搜索栏的查询,它显示表格中的记录,按照从select标签中选择的日期进行过滤,就像这样

@summary_history = SummarySheet.where(record_inserted_at: DateTime.strptime(params[:date], "%m/%d/%Y - %l:%M %p").at_beginning_of_minute..DateTime.strptime(params[:date], "%m/%d/%Y - %l:%M %p").at_end_of_minute)

这个查询有效,但它给出了UTC格式的输出,它与我的select标签的PCT格式不匹配,我得到的结果为null。如果我将我的选择标签时区更改为UTC,我将获得所需的输出。

我在我的过滤器查询中尝试.in_time_zone("Pacific Time (US & Canada)")来转换PCT中的日期但是没有用

有人可以建议我如何保留PCT中的选择标签并触发查询并仍然获得日期过滤输出?提前致谢

1 个答案:

答案 0 :(得分:0)

我通过将查询更改为

来解决了这个问题
@summary_history = SummarySheet.where(record_inserted_at: Time.zone.strptime(params[:date], "%m/%d/%Y - %l:%M %p").at_beginning_of_minute..Time.zone.strptime(params[:date], "%m/%d/%Y - %l:%M %p").at_end_of_minute)