1

I am using jQuery ui datepicker and applied a date format like this

Wednesday, 30 April, 2016

Here is the code

HTML

<input type="text" id="closedate">

jQuery

$(document).ready(function() {
    $("#closedate").datepicker({ dateFormat: 'DD, d MM, yy' });
});

Now how can I add day count from current date like this in my input?

Wednesday, 30 April, 2016 (3 Days)

demo

3 days in bracket is a count from current date

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
Suresh Karia
  • 17,550
  • 18
  • 67
  • 85

4 Answers4

3

You count calculate on change event of datepicker input.

See example Code:

$('#date1').change(function() {
    var diff = new Date() - $('#date1').datepicker("getDate");
    $('#diff').text(Math.floor(diff / (1000*60*60*24) * -1) + 1);
});

See it working:

https://jsfiddle.net/ddan/jvxz6g4c/

EDIT

Edited version after your comment:

Added some extra string formatting and date utils:

$('#date1').change(function() {
    var pickedDate = $('#date1').datepicker("getDate");
    var diff = new Date() - $('#date1').datepicker("getDate");
    var dayDiff = Math.floor(diff / (1000*60*60*24) * -1) + 1;

    $('#pickedDate').text(getDatStr(pickedDate));
    $('#diff').text('(' + dayDiff + ' Days )');
});

var monthNames = [
  "January", "February", "March",
  "April", "May", "June", "July",
  "August", "September", "October",
  "November", "December"
];

var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];

function getDatStr(date) {
  var day = date.getDate();
  var monthIndex = date.getMonth();
  var year = date.getFullYear();
  var dayOfWeek = date.getDay();

  return days[dayOfWeek] + ', ' + day + ' ' + monthNames[monthIndex] + ', ' +  year;
}

See it working:

https://jsfiddle.net/ddan/jvxz6g4c/2/

EDIT

Small edits based on comment

https://jsfiddle.net/ddan/jvxz6g4c/4/

Slightly closer: https://jsfiddle.net/ddan/jvxz6g4c/6

DDan
  • 8,068
  • 5
  • 33
  • 52
1

This may help: Get difference between 2 dates in javascript?

Essentially convert the value returned from the datepicker in to a standard JS date.

var date1 = new Date("7/13/2010");
var date2 = new Date("12/15/2010");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
alert(diffDays);
Community
  • 1
  • 1
Oam Psy
  • 8,555
  • 32
  • 93
  • 157
  • I dont want to use two dates and datepicker, I want to use only one date picker and first date will be current date and other date will be selected date – Suresh Karia Apr 12 '16 at 07:45
1

Just addition over answer provided by DDan

Use onSelect event and you can use formatted value framed by provided formatter.

$(document).ready(function() {
  $("#closedate").datepicker({
    dateFormat: 'DD, d MM, yy',
    onSelect: function(a, b) {
      var diff = new Date() - $(this).datepicker("getDate");
      diff = Math.floor(diff / (1000 * 60 * 60 * 24) * -1) + 1;
      var value = a + '(' + diff + ' days)'
      $(this).val(value);
    }
  });
});
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<link href="http://code.jquery.com/ui/1.8.21/themes/base/jquery-ui.css" rel="stylesheet" />
<script src="http://code.jquery.com/ui/1.8.18/jquery-ui.min.js"></script>

<input type="text" id="closedate" size='50'>

Fiddle demo

Community
  • 1
  • 1
Rayon
  • 36,219
  • 4
  • 49
  • 76
1

CODE: https://jsfiddle.net/5pr7uhc0/

<div class="form-group">
    <label class="control-label col-sm-2" for="date">Date:</label>
    <div class="col-sm-5">
        <input id="date1" value="Pick Date" type="button" class="form-control btn btn-default" name="training_start_date" value=""> 
    </div>
</div>
<br>
<span id="pickedDate">  </span>  <span id='diff'>  </span>

Jquery:

$('#date1').datepicker({ dateFormat: 'DD, d MM, yy' });

$('#date1').change(function() {
    var date = $(this).datepicker('getDate');
    var today = new Date();
    var dayDiff = Math.ceil((today - date) / (1000*60*60*24) * -1);
    $('#date1').val($.datepicker.formatDate('DD, d MM, yy', date) + ' ( ' + dayDiff + ' Days )');
});

Just cleaned code from @DDan.

Jubin Patel
  • 1,959
  • 19
  • 38