Rails:使用bootstrap3-datetimepicker

时间:2016-07-21 08:15:15

标签: ruby-on-rails ruby-on-rails-4 datetimepicker

我的应用使用bootstrap3-datetimepicker来显示时间(小时和分钟)。

时间可以正确保存在表格中,并可以在show视图中显示。

但是当我尝试编辑时会显示错误的时间。 虽然小号是正确的,但小时是错误的(总是晚上8点)。

例如,

DB:04:01:00

查看:8:01 PM(格式为LT

我希望成为4:01 AM

edit.html.erb

<%= render 'event_form'%>

_event_form.html.erb

:start_at:end_at都会发生这种情况。

<%= form_for([@room, @event]) do |f| %>

   ...

  <div class="container">
    <div class="row">
      <div class='col-sm-6'>
         <div class="form-group">
           <div class='input-group date' id='datetimepicker1'>
             <%= f.text_field :start_at, :class => 'form-control'%> #this line
             <span class="input-group-addon">
               <span class="glyphicon glyphicon-time"></span>
             </span>
           </div>
         </div>
      </div>
      <script type="text/javascript">
        $(function () {
          $('#datetimepicker1').datetimepicker({
            format: 'LT'
          });
        });
      </script>
    </div>
  </div>

<div class="container">
    <div class="row">
        <div class='col-sm-6'>
            <div class="form-group">
                <div class='input-group date' id='datetimepicker2'>
                    <%= f.text_field :end_at, :class => 'form-control'%> #this line
                    <span class="input-group-addon">
                        <span class="glyphicon glyphicon-time"></span>
                    </span>
                </div>
            </div>
        </div>
        <script type="text/javascript">
            $(function () {
                $('#datetimepicker2').datetimepicker({
                    format: 'LT'
                });
            });
        </script>
    </div>
</div>

   ...

我关注https://eonasdan.github.io/bootstrap-datetimepicker/#custom-formats

模式

  create_table "events", force: :cascade do |t|
    t.time     "start_at"
    t.time     "end_at"
    t.string   "title"
    t.string   "detail"
    t.integer  "room_id"
    t.datetime "created_at",      null: false
    t.datetime "updated_at",      null: false
    t.string   "category"
    t.integer  "ccy"
    t.decimal  "amount"
  end

events_controller.rb

 ...
  def edit
    @room = Room.find(params[:room_id])
    @event = @room.events.find(params[:id])
  end
 ...

如果你能给我任何建议,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

听起来数据库中的日期是UTC格式,但是日期选择器会在您的本地时区显示日期。您可以按如下方式禁用日期选择器的时区

var options = {};
options['timeZone'] = '';
$('.datetimepicker').datetimepicker(options);