将日期时间拆分为各个部分

时间:2012-03-27 22:40:47

标签: ruby-on-rails ruby-on-rails-3 datetime activerecord

我有两个字段start_timeend_time两个字段都以日期时间格式存储。

我想要一些帮助的问题是,如何使用start_time属性输入的日期来形成end_time属性的日期(并且只是提示时间方面),因为开始+结束时间将具有同一天,时间会有所不同。

<div class="field">
       <%= f.label :start_time %>
       <%= f.datetime_select :start_time, :minute_step => 15, :default => Time.now+1.week, :order => [:month, :day, :year] %>
    </div>
    <div class="field">
        <%= f.label :end_time  %>

        <%= f.time_select :end_time, :ignore_date => true, :minute_step => 15 %>
    </div>

2 个答案:

答案 0 :(得分:0)

您需要通过javascript执行此操作。

使用on key up事件。

$("#start").keyup(function(){
  ...
});

如果使用jquery,则在任一输入上使用.val()getter和setter。

d = Date($("#start").val())

d2 = Date(d.getday(), d.getMonth(), d.getDay());

$("#end").val(d2);

类似的东西。

使用日期时间对象的方法为日期月份格式化日期。

答案 1 :(得分:0)

通过使用以下代码添加before_save方法解决了这个问题:

sale_times.each do |sale|
    sale.end_time = DateTime.parse("#{sale.start_time.strftime("%x")} #{sale.end_time}")
end

查看代码:

<div class="field">
    <%= f.label :start_time %>
    <%= f.date_select :start_time, :minute_step => 15, :default => Time.now+1.week, :order => [:month, :day, :year] %>
</div>
<div class="field">
    <%= f.label :end_time  %>      
    <%= f.time_select :end_time, :minute_step => 15 %>
</div>