Below is my code...
/**
* Check whether the values entered in the date fields are in dd/mm/yyyy format
* and whether the dd, mm and yyyy values are valid
**/
function validateDateFormat(obj)
{
var dtStr=obj.value;
var year;
var day;
var month;
var leap=0;
var valid=true;
var oth_valid=true;
var feb=false;
var validDate=true;
var Ret=true;
if(obj.readOnly==false)
{
if(dtStr!="" && dtStr!=null)
{
year=dtStr.substr(6,4);
month=dtStr.substr(3,2);
day=dtStr.substr(0,2);
if(year=="0000" || year<1900 || month=="00" || day=="00" || dtStr.length<10)
开发者_运维知识库 {
validDate=false;
}
if(validDate==true)
{
leap=year%4;
if(month=="02")
{
feb=true;
}
if(leap==0 && month=="02")
{
if(day>29)
{
valid=false;
feb=true;
}
}
else if(month=="02" && day>28)
{
valid=false;
feb=true;
}
if(feb==false)
{
if(month=="03" || month=="01" || month=="05" || month=="07" || month=="08" || month=="10" || month=="12")
{
if(day>31)
{
oth_valid=false;
}
}
else if(month=="04" || month==06 || month=="09" || month=="11")
{
if(day>30)
{
oth_valid=false;
}
}
else
{
oth_valid=false;
}
}
}
}
if(valid==false || oth_valid==false || validDate==false)
{
alert("Please enter the valid date in the dd/mm/yyyy Format only");
obj.value="";
obj.focus();
Ret=false;
}
return Ret;
}
}
You can use SimpleDateFormat
to validate a date input string:
String input = "12/05/2011";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.setLenient(false);
try {
Date date = sdf.parse(input);
// it's good
} catch (ParseException e) {
// it's bad
}
You can try to create a temporary date with the string,
and check that the date and month match the input.
If you know that every user uses dd-mm-yyyy format a date can be made with
Date.parse(string)- but if you have any US users, better make the Date
with the constructor.
function isvalid_dmy(s){
// ddmmyyyy date string
var day, A= s.split(/\D+/);
for(var i= 0; i<3; i++){
A[i]= parseInt(A[i], 10)
}
A[1]-= 1;
try{
day= new Date(A[2], A[1], A[0]);
if(day.getMonth()== A[1] && day.getDate()== A[0]){
return day.toLocaleDateString();
// or return true
}
return false;
}
catch(er){
return false;// or handle bad date here
}
}
//test
var day1= '13-05-2011', day2= '31-04-2011';
day1+'= '+isvalid_dmy(day1)+'\n'+
day2+'= '+isvalid_dmy(day2);
/* returned value: (String)
13-05-2011= Friday, May 13, 2011
31-04-2011= false
*/
精彩评论