Bootstrap 日期时间选择器始终将日期设置为 2016 年 1 月 20 日

Bootstrap Datetime picker always sets date to Jauary 20 2016

我正在尝试从表单字段值初始化 Bootstrap 日期时间选择器。

http://eonasdan.github.io/bootstrap-datetimepicker/

日期选择器在初始化时始终显示 "January 20, 2016",即使 moment 对象是正确的。

我看不出我做错了什么。我也试过只使用字符串。

HTML

<label for="timer-date">End date</label>
<input type="text" id="timer-date" class="form-control" value="2016-12-15">
<label for="timer-time">End time</label>
<input type="text" id="timer-time" class="form-control" value="20:54:00">

JS

$(function() {

  var date = $('#timer-date').val() + ' ' + $('#timer-time').val();
  console.log (date); 
  // 2016-12-15 20:54:00

  var date_obj = moment(date);
  console.log (date_obj); 
  // _d    Date {Thu Dec 15 2016 20:54:00 GMT+0000 (GMT Daylight Time)}


  $('#timer-date').datetimepicker({
      format: 'LL',
      defaultDate: date_obj
  });

  $('#timer-time').datetimepicker({
      format: 'LT',
      defaultDate: date_obj
  });
});

编辑:("bootstrap datetime picker" 确实支持 momentjs 日期)。

问题是值属性,您需要在读取它们后清除它们,或者将数据放入数据属性中。

Working jsfiddle

var date = $('#timer-date').val() + ' ' + $('#timer-time').val();
  console.log (date);   // 2016-12-15 20:54:00
  $('#timer-date').val("");
  $('#timer-time').val("");

  var date_obj = moment(date);
  console.log (date_obj); 
  // _d    Date {Thu Dec 15 2016 20:54:00 GMT+0000 (GMT Daylight Time)}

   $('#timer-date-wrapper').datetimepicker({
      format: 'LL',
      defaultDate: date_obj
  });

  $('#timer-time-wrapper').datetimepicker({
    format: 'LT',
    defaultDate: date_obj
  });