2011-05-13 3 views
1

아래는 내 코드 일/월/년 형식의 날짜를 확인하는 방법을 말해 줄래는 사람이 ... 어떻게

/** 
* 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; 
    } 
} 

답변

10
당신은 날짜 입력 문자열의 유효성을 검사 SimpleDateFormat을 사용할 수 있습니다

:

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 
} 
+0

위키하지만 * * * 형식 문자열을 사용했는지 확인하십시오! – Qwerky

+0

@Qwerky : 죄송하지만, 고마워요. – WhiteFang34

+0

+1 (SO 필러) – dacwe

0
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 
*/