'Datepicker formatDate

i need to change my format date in date picker from "12/25/2022"(for example) on "25/December/2022"

heres my code:

$(".date-picker").datepicker({
  format: 'dd-mm-yyyy',
  minDate: 0,
  numberOfMonths: \[3,1\],
  beforeShowDay: function(date) {
    var date1 = $.datepicker.parseDate($.datepicker.\_defaults.dateFormat, $("#input1").val());
    var date2 = $.datepicker.parseDate($.datepicker.\_defaults.dateFormat, $("#input2").val());
    return \[true, date1 && ((date.getTime() == date1.getTime()) || (date2 && date \>= date1 && date \<= date2)) ? "dp-highlight" : ""\];
  },
  onSelect: function(dateText, inst) {
    var date1 = $.datepicker.parseDate($.datepicker.\_defaults.dateFormat, $("#input1").val());
    var date2 = $.datepicker.parseDate($.datepicker.\_defaults.dateFormat, $("#input2").val());
    var selectedDate = $.datepicker.parseDate($.datepicker.\_defaults.dateFormat, dateText);

    if (!date1 || date2) {
      $("#input1").val(dateText);
      $("#input2").val("");
      $(this).datepicker();
    } else if( selectedDate < date1 ) {
      $("#input2").val( $("#input1").val() );
      $("#input1").val( dateText );
      $(this).datepicker();
    } else {
      $("#input2").val(dateText);
      $(this).datepicker();
    }
  }
});


Solution 1:[1]

Consider the following.

$(function() {
  var dFormat = 'dd/MM/yy';

  $(".date-picker").datepicker({
    dateFormat: dFormat,
    minDate: 0,
    numberOfMonths: [3, 1],
    beforeShowDay: function(date) {
      var date1 = $.datepicker.parseDate(dFormat, $("#input-1").val());
      var date2 = $.datepicker.parseDate(dFormat, $("#input-2").val());
      var result = [true, ""];
      if (date1 && (date.getTime() == date1.getTime()) || (date2 && date >= date1 && date <= date2)) {
        result[1] = "ui-state-highlight";
      }
      return result;
    },
    onSelect: function(dateText) {
      var date1 = $("#input-1").datepicker("getDate");
      var date2 = $("#input-2").datepicker("getDate");
      var selectedDate = $.datepicker.parseDate(dFormat, dateText);

      if (!date1 || date2) {
        $("#input-1").datepicker("setDate", dateText);
      } else if (selectedDate < date1) {
        $("#input-2").datepicker("setDate", $("#input1").datepicker("getDate"));
        $("#input-1").datepicker("setDate", dateText);
      } else {
        $("#input-2").datepicker("setDate", dateText);
      }
    }
  });
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.13.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.1/jquery-ui.js"></script>

<p>Start: <input type="text" id="input-1" class="date-picker" value="25/March/2022"> End: <input type="text" id="input-2" class="date-picker" value="31/March/2022"></p>

The logic in onSelect is not clear. I tried to clean it up, yet I cannot determine what you were trying to accomplish.

For dateFormat, use dd/MM/yy. Breakdown:

  • dd - day of month (two digit)
  • MM - month name long
  • yy - year (four digit)

Details: https://api.jqueryui.com/datepicker/#utility-formatDate

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Twisty