Dan Nick
Dan Nick

Reputation: 426

JQuery DatePicker Invalid Date

I am having an issue when the date from JQuery DatePicker is selected and used as a variable in my SQL Statement. It brings up an error saying invalid datetime string even when I formatted it using DateTime.Parse or Convert.DateTime.

JQuery DatePicker

   <script>
  $( function() {
      $("#datepicker").datepicker({
        altField: "#ContentPlaceHolder1_selectDate",
          defaultDate: $('#ContentPlaceHolder1_defaultDate').val(),
          dateFormat: "mm-dd-yy",
          onSelect: function (date, obj) {
              $('#ContentPlaceHolder1_defaultDate').val(date);
              $('#ContentPlaceHolder1_selectDate').val(date)
              $('#ContentPlaceHolder1_defaultDate').trigger('change');
              $('#form1').submit();  
          },
    });
      });
  </script>
  <script>
     $(document).ready(function () {
     onLoad:   $('#ContentPlaceHolder1_defaultDate').val($('#ContentPlaceHolder1_selectDate').val());
    });
  </script>

<div id="datepicker"></div>
<input type="text" id="defaultDate" runat="server"/>
<input type="text" id="selectDate" runat="server" />
<asp:Label ID="Label1" runat="server" />

UPDATE: This issue is the Postback. If I do this code. It works fine

    if (IsPostBack)
    {
        string defDate = selectDate.Value;
        DateTime DT = DateTime.Parse(defDate);
        label1.Text = DT.ToShortDateString();
     }

However this causes the error message

    if (!IsPostBack)
    {
        string defDate = selectDate.Value.Replace('-', '/');
        DateTime DT = DateTime.Parse(defDate);
        label1.Text = DT.ToShortDateString();
     }

This code works

 if (!IsPostBack)
    {
        string defDate = DateTime.Now.Date.ToShortDateString();
        DateTime DT = DateTime.Parse(defDate);
        label1.Text = DT.ToShortDateString();
    }
  else
    {
        string defDate = selectDate.Value.Replace('-', '/');
        DateTime DT = DateTime.Parse(defDate);
        label1.Text = DT.ToShortDateString();
    }

Can someone explain the reason for this?

Upvotes: 2

Views: 1077

Answers (1)

John
John

Reputation: 579

DateTime.Parse only takes 4 different formats.

2018-09-14
09/14/2018
Sep 14 2018
14 Sep 2018

It will not accept mm-dd-yy format.

Try replacing the - with / like the following.

defDate.replace('-', '/');

Upvotes: 4

Related Questions