Bootstrap 日期时间选择器添加月而不是天

Bootstrap datetime picker adding months instead of days

我在 jsfiddle 中有以下代码片段。我正在尝试将给定的数字作为天数添加到日历中。

HTML代码:

<input id="firstDate"/>
<input type="hidden" value="11" id="days">
<br/>
<input id="secondDate"/>

Javascript:

<script>
var pickerOptsGeneral = {
format: "dd/mm/yyyy",
autoclose: true,
minView: 2,
maxView: 2
};

 $('#firstDate')
.datetimepicker(pickerOptsGeneral)
.on('changeDate', function(ev){
var days = document.getElementById("days").value;
 var oldDate = new Date(ev.date);
 var newDate = new Date();
 newDate.setDate(oldDate.getDate() + days);

 secondDate.val(newDate.getDate()+"/"+(newDate.getMonth()+1)+"/"+newDate.getFullYear());
 secondDate.datetimepicker('update');
});
var secondDate = $('#secondDate').datetimepicker(pickerOptsGeneral);
</script>

上面的代码是添加月而不是天。如果我 select 日期

01/06/2017 输出将是 19/9/2017

如果我硬编码日期:

     newDate.setDate(oldDate.getDate() + 11);

这会给我想要的输出。谁能帮我解决这个问题?

试试这个...

var pickerOptsGeneral = {
    format: "dd/mm/yyyy",
    autoclose: true,
    minView: 2,
    maxView: 2
};
$('#firstDate')
  .datetimepicker(pickerOptsGeneral)
  .on('changeDate', function(ev){
     var days = parseInt(document.getElementById("days").value);
     var oldDate = $("#firstDate").data("datetimepicker").getDate();
     var oldDateOriginal = new Date(oldDate);
     var  newDate = new Date(oldDateOriginal);
     newDate.setDate(newDate.getDate() + days);
     secondDate.val(newDate.getDate()+"/"+(newDate.getMonth()+1)+"/"+newDate.getFullYear());
     secondDate.datetimepicker('update');
});
var secondDate = $('#secondDate').datetimepicker(pickerOptsGeneral);

JSFiddle link 出售 - http://jsfiddle.net/sdyoxx2r/9/

当您获得 <input type="hidden" value="11" id="days" /> 的值时,它将 return 值作为字符串。

因此您需要将天数的值从字符串转换为整数。

var pickerOptsGeneral = {
format: "dd/mm/yyyy",
autoclose: true,
minView: 2,
maxView: 2
};
$('#firstDate').datetimepicker(pickerOptsGeneral).on('changeDate',function(ev){
 var days        = parseInt($('#days').val());
 var oldDate = new Date(ev.date);
 var newDate = new Date();
 newDate.setDate(oldDate.getDate() + days);
 secondDate.val(newDate.getDate()+"/"+newDate.getMonth()+1)+"/"+newDate.getFullYear());
 secondDate.datetimepicker('update');
});
var secondDate = $('#secondDate').datetimepicker(pickerOptsGeneral);