轨道中各个区域的时间比较

时间:2018-01-24 11:10:04

标签: ruby-on-rails timezone

我正在为美国客户开发一个应用程序。用户无法将车辆停放超过4小时。我的数据库时间以UTC格式存储。

我的视图文件中有以下行,以便不显示自停放车辆已经过了四个小时的车辆,

<% if (@vehicle.arrival_date == Date.current)%>
    <% if Time.current < (@vehicle.arrival_time + 4.hours) %> 
       <%= @vehicle.license_plate %>
    <% end %>
<% end %>

时区存在问题,因为我可以在印度找到预期的结果,但客户不能在美国。如何使用下面的代码来查询正确的结果。如何使用 in_time_zone(&#39;中部时间(美国和加拿大)&#39;)方法rails方法??

我允许用户选择他们的time_zone,以便他们可以查看预期的结果,

<%= f.select :time_zone, (ActiveSupport::TimeZone.us_zones.map{|zone| zone.name}),{:selected => @vehicle.time_zone }%>

我试图像这样修改上述条件,

<% if (@vehicle.arrival_date.in_time_zone(@vehicle.time_zone) ==  Date.current.in_time_zone(ValidatedVehicle.last.time_zone)
)%>
  <% if Time.current.in_time_zone(@vehicle.time_zone) < (validated_vehicle.arrival_time.in_time_zone(@vehicle.time_zone) + 4.hours) %>
  <% end %>
<% end %>

但不确定它是否正确?

0 个答案:

没有答案