2011-05-03 3 views
0

'02/27/2010 '을 입력하면 NaN이 아닙니다. 또한 '02/31/2010 '을 입력 할 때도 Date 및 getDate ("mydate") 함수를 사용할 때 NaN이 아닙니다. 이것을 3 월 3 일로 바꿀 것인가?자바 스크립트에서 '02/27/2010 '날짜는 어떻게 받습니까? '02/31/2010'은 실패합니까?

다음 달 또는 1 년으로 이동할 요일을 추가하지 않고 날짜가 실제 날짜인지 확인하는 방법이 있습니까?

감사합니다, 마크

답변

2

이 하나의 방법입니다

String.prototype.isValidDate = function(){ 
    var arrDate = this.split("/"); 
    if(arrDate.length!=3)return false; 
    var month = parseInt(arrDate[0],10); 
    var day = parseInt(arrDate[1],10); 
    var year = parseInt(arrDate[2],10);         
    var dateComp = new Date(year, month-1, day); 
    return (month == dateComp.getMonth()+1 && 
      day == dateComp.getDate() && 
      year == dateComp.getFullYear()); 
    }; 

    alert("2/1/2011".isValidDate()); 
    alert("2/31/2011".isValidDate()); 
    alert("02/01/2011".isValidDate()); 
몇 가지 작은 날짜 계산

Example

+0

1/2 kb. Perfect =) 시간의 98.6 %를 작동해야합니다. – Rudie

+0

좋아, 지금 고마워. – RetroCoder

+0

훌륭합니다. 감사합니다. – RetroCoder

1

당신은 자바 스크립트에서 모든 것을 그의 날짜 조작을 datejs을 체크 아웃 할 수 있습니다.

+1

26킬로바이트 조금 보인다 많이 ... – Rudie

+2

@Rudie, 물론, 그것은 모두 요구 사항에 달려 있습니다. 때로는 26KB가 사례의 73 %에서 작동하고 다른 27 %는 중단해야하며 유지해야 할 필요가있는 저작자와 신만이 사용할 수있는 약 2KB의 진부한 자바 스크립트 코드를 작성하여 바퀴를 재발 명하는 것보다 낫습니다. –

+0

우수한 점. 그것은 모두 사건에 달려 있습니다. ma favs =)에 웹 사이트를 저장했습니다. – Rudie

0

//

function isvalid_mdy(s){ 
    var day, A= s.split(/\D+/).map(function(itm,i){return parseInt(itm,10)}); 
    A[0]-=1; 
    try{ 
     day= new Date(A[2], A[0], A[1]); 
     if(day.getMonth()== A[0] && day.getDate()== A[1]) return day; 
     throw 'Bad Date '; 
    } 
    catch(er){ 
     return NaN; 
    } 
} 
function isvalid_dmy(s){ 
    var day, A= s.split(/\D+/).map(function(itm,i){return parseInt(itm,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; 
     throw 'Bad Date '; 
    } 
    catch(er){ 
     return NaN; 
    } 
} 
관련 문제