how to do date validation using javascript for YYYY-MM-DD format?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • prabhunew2005
    New Member
    • Aug 2006
    • 10

    how to do date validation using javascript for YYYY-MM-DD format?

    Hi all,

    I need to allow the date format only yyyy-mm-dd to store into mysql4 data base.

    I have the validation coding for mm-dd-yyyy format. But i could not modify to convert it to validate required format.

    Help me.

    Advance thanks.
  • prabhunew2005
    New Member
    • Aug 2006
    • 10

    #2
    how to do date validation using javascript for YYYY-MM-DD format?

    Hi all,

    I need to allow the date format only yyyy-mm-dd to store into mysql4 data base.

    I have the validation coding for mm-dd-yyyy format. But i could not modify to convert it to validate required format.

    Help me.

    Advance thanks.

    Comment

    • ronverdonk
      Recognized Expert Specialist
      • Jul 2006
      • 4259

      #3
      Found this at javascriptkit.c om You only have to change the format check from yyyy/mm/dd into yyyy-mm-dd.
      Code:
      <script type="text/javascript">
      /**--------------------------
      //* Validate Date Field script- By JavaScriptKit.com
      //* For this script and 100s more, visit http://www.javascriptkit.com
      //* This notice must stay intact for usage
      ---------------------------**/
      function checkdate(input){
      var validformat=/^\d{4}\/\d{2}\/\d{2}$/ //Basic check for format validity
      var returnval=false
      if (!validformat.test(input.value))
      alert("Invalid Date Format. Please correct and submit again.")
      else{ //Detailed check for valid date ranges
      var yearfield=input.value.split("/")[0]
      var monthfield=input.value.split("/")[1]
      var dayfield=input.value.split("/")[2]
      var dayobj = new Date(yearfield, monthfield-1, dayfield)
      if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
      alert("Invalid Day, Month, or Year range detected. Please correct and submit again.")
      else {
       alert ('Correct date');
      returnval=true }
      }
      if (returnval==false) input.select()
      return returnval
      }
      
      </script></head>
      <form onSubmit="return checkdate(this.mydate)">
      <input type="text" name="mydate" />
      <input type="submit" value="submit" /><br />
      <b>Valid date format:</b> yyyy/mm/dd<br />
      <input type="submit" value="submit" />
      </form>
      Ronald :cool:

      Comment

      • divyaK
        New Member
        • Sep 2007
        • 1

        #4
        I tried to use this code but its not working .....can any one tell the reason..

        Comment

        • gits
          Recognized Expert Moderator Expert
          • May 2007
          • 5390

          #5
          hi ...

          could you tell the error ... or what problem you have with it?

          kind regards

          Comment

          • jonso
            New Member
            • Oct 2007
            • 2

            #6
            Originally posted by prabhunew2005
            Hi all,

            I need to allow the date format only yyyy-mm-dd to store into mysql4 data base.

            I have the validation coding for mm-dd-yyyy format. But i could not modify to convert it to validate required format.

            Help me.

            Advance thanks.
            Just reverse the arrangement of characters in your regular expression.As it wont be enough make sure that the value you compare to the regular expression is in the format which you want.To simplify the matter why cant you sent the code so that i can look at it and change it for you.

            Comment

            • avijit dey
              New Member
              • Oct 2008
              • 1

              #7
              Originally posted by jonso
              Just reverse the arrangement of characters in your regular expression.As it wont be enough make sure that the value you compare to the regular expression is in the format which you want.To simplify the matter why cant you sent the code so that i can look at it and change it for you.
              Hii,

              As per your request m sending you the code. M not able to fix it from my end.Can you please help me out?

              Code:
              /****DATE VALIDATION ****
              *************************/
              
              //Declaring valid date character, minimum year and maximum year
              var dtCh= "-";
              var minYear=2005;
              var maxYear=2015;
              
              function isInteger(s){
              	var i;
                  for (i = 0; i < s.length; i++){   
                      // Check that current character is number.
                      var c = s.charAt(i);
                      if (((c < "0") || (c > "9"))) return false;
                  }
                  // All characters are numbers.
                  return true;
              }
              
              function stripCharsInBag(s, bag){
              	var i;
                  var returnString = "";
                  // Search through string's characters one by one.
                  // If character is not in bag, append to returnString.
                  for (i = 0; i < s.length; i++){   
                      var c = s.charAt(i);
                      if (bag.indexOf(c) == -1) returnString += c;
                  }
                  return returnString;
              }
              
              function daysInFebruary (year){
              	// February has 29 days in any year evenly divisible by four,
                  // EXCEPT for centurial years which are not also divisible by 400.
                  return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
              }
              function DaysArray(n) {
              	for (var i = 1; i <= n; i++) {
              		this[i] = 31
              		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
              		if (i==2) {this[i] = 29}
                 } 
                 return this
              }
              
              function isDate(dtStr){
              
              	var strYear=dtStr.substring(pos2+1)
              	var strMonth=dtStr.substring(0,pos1)
              	var strDay=dtStr.substring(pos1+1,pos2)
              	var daysInMonth = DaysArray(12)
              	var pos1=dtStr.indexOf(dtCh)
              	var pos2=dtStr.indexOf(dtCh,pos1+1)
              		
              	strYr=strYear
              
              	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
              	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
              	for (var i = 1; i <= 3; i++) {
              		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
              	}
              
              	year=parseInt(strYr)
                  month=parseInt(strMonth)
              	day=parseInt(strDay)
              	
              if (pos1==-1 || pos2==-1){
              		alert("The date format should be : yyyy-mm-dd")
              		return false
              	}
              	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
              		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
              		return false
              	}
              	if (strMonth.length<1 || month<1 || month>12){
              		alert("Please enter a valid month")
              		return false
              	}
              	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
              		alert("Please enter a valid day")
              		return false
              	}
              	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
              		alert("Please enter a valid date")
              		return false
              	}
              return true
              }
              function ValidateDate(dt){
              	//var dt=`.frmSample.txtDate
              	if (isDate(dt.value)==false){
              		dt.focus()
              		dt.style.background = 'Yellow';
              		return false
              	}
              	dt.style.background = 'White';
                  return true
              }
              
              /****END DATE VALIDATION ****
              Last edited by acoder; Oct 21 '08, 10:10 AM. Reason: Added [code] tags

              Comment

              Working...