我正在为美国客户开发一个应用程序。用户无法将车辆停放超过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 %>
但不确定它是否正确?