当前日期与URL日期不匹配

时间:2012-01-24 06:05:18

标签: ruby-on-rails date

我正在使用Rails 3并且在创建产品时,在网址中传递的日期是当前/现在的日期,但选择器中的日期是前一天的日期。

你能建议我如何解决这个问题吗?

e.g。 products / new?date = 2012-01-24是当前日期,但下拉列表中的日期显示为2012年1月23日。

请指导。

<p>
   <%= f.label :title, t("products.title") %><br />
  <%= f.text_field :title %>
</p>
<p>
                  <%= f.label :date, t("products.time") %>
          <select name="hour" id="hour">
            <% time = Time.zone.now.strftime("%H").to_i
        if time > 12
          time = time - 12
          am = false
        else
          am = true
        end %>
          <% if controller.action_name == "edit"%>
            <% if return_timesetting == 0%>
              <% for item in 0..23 %>
                  <% if @product.date.strftime("%H").to_i > 12
                      am = false
                    else
                      am = true
                    end %>
              <option value="<%= item%>"<%if item == @product.date.strftime("%H").to_i%> SELECTED<%end%>><%= item%></option>
          <% end %>
        <% else %>
          <% for item in 1..12 %>
            <% time2 = @product.date.strftime("%H").to_i
            if time2 > 12
              am = false
            else
              am = true
            end
            if time2 == 0
              time2 = 12
              am = true
            elsif time2 == 12
              am = false
            end
%>
            <% if time2 > 12%>
              <option value="<%= item%>"<%if item == (time2 - 12)%> SELECTED<%end%>><%= format_hour(item)%></option>
            <% else %>
              <option value="<%= item%>"<%if item == time2%> SELECTED<%end%>><%= format_hour(item)%></option>
            <% end %>
          <% end %>
        <% end %>
          <%else%>
            <% if return_timesetting == 0%>
          <% for item in 0..23 %>
            <option value="<%= item%>"<%if item == Time.zone.now.strftime("%H").to_i %> SELECTED<%end%>><%= item%></option>
          <% end %>
        <% else %>
          <% for item in 1..12 %>
            <option value="<%= item%>"<%if item == time %> SELECTED<%end%>><%= format_hour(item)%></option>
          <% end %>
        <% end %>

      <%end%>
          </select>
          :
          <select name="minute" id="minute">
          <% if controller.action_name == "edit"%>
              <% [0,5,10,15,20,25,30,35,40,45,50,55].each do |item| %>
              <option value="<%= item%>"<%if item == @product.date.strftime("%M").to_i%> SELECTED<%end%>><%= format_minutes(item) %></option>
          <% end %>
          <%else%>
        <% [0,5,10,15,20,25,30,35,40,45,50,55].each do |item| %>
          <option value="<%= item%>"><%= format_minutes(item) %></option>
        <% end %>

      <%end%>
          </select>

          <% if return_timesetting == 1%>
            <% if am == true
              selected = "am"
              else
                selected = "pm"
              end%>
            <%= select_tag "am_pm", options_for_select(["am", "pm"], selected)%>
          <% end %>

        <%= f.date_select 'date' %>  
          </p>


<p>
  <%= f.label :description, t("products.description") %><br />
  <%= f.text_area :description, :rows => 3 %> <br />
  <%= f.check_box :public, :checked => (@product.new_record? ? current_user.public_events :  @product.public) %>
  <%= f.label t("products.set_public"), :for => "product_public" %>
</p>




        <input type="hidden" name="date" value="<%=@date%>" id="date" />

1 个答案:

答案 0 :(得分:0)

我认为选择器正在采用与您的时区不同的UTC时区,以便更深入地了解问题,尝试Time.now方法来查看时间。如果问题是时区不同,请在选择器中使用utc_offset