psudo
psudo

Reputation: 1558

Bootstrap datetime picker adding months instead of days

I have the following code snippet in jsfiddle. I'm trying to add given number as days to the calendar.

HTML Code:

<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>

The above code is adding months instead of days. If i select the date

01/06/2017 the output will be 19/9/2017

If I hardcode the date:

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

This will give me the output I want. Can anyone help me on this ?

Upvotes: 0

Views: 1222

Answers (2)

try this...

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);

JSFfiddle link for same - http://jsfiddle.net/sdyoxx2r/9/

Upvotes: 1

Ankit Singh
Ankit Singh

Reputation: 1477

When you get the value of <input type="hidden" value="11" id="days" /> it will return value as string.

So you need to convert value of days from string to integer .

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);

Upvotes: 0

Related Questions