2012-11-08 5 views
2

mm.dd.yyyy 형식의 날짜가 오늘보다 크고 오늘부터 6 개월 후의 날짜보다 작은 지 확인하려고합니다. 또한 첫 번째 경고가 사실이며 두 번째를 보여주고 내가 isLinkExpiryDateWithinRange('12.08.2012')을 실행하면 I이이 범위로 1가 표시됩니다 할범위 내의 날짜 확인

var isLinkExpiryDateWithinRange = function(value) { 
    var monthfield = value.split('.')[0]; 
    var dayfield = value.split('.')[1]; 
    var yearfield = value.split('.')[2]; 
    var inputDate = new Date(yearfield, monthfield - 1, dayfield); 
    var today = new Date();  
    today = new Date(today.getFullYear(), today.getMonth(), today.getDate()); 
    alert(inputDate > today);//alert-> true 
    var endDate = today; 
    endDate.setMonth(endDate.getMonth() + 6); 
    alert(inputDate > today);//alert-> false 
    if(inputDate > today && inputDate < endDate) { 
     alert('1'); 
    } else { 
     alert('2');/always alert it 
    } 
} 

하지만, 2를 표시 : 여기

내 코드입니다 그릇된.

아무도 설명 할 수 있습니까?

답변

5

변경 :

var endDate = today; 

에 :

var endDate = new Date(today); 

객체가 참조하고 변경하는 방법에 대한 게시물 here를 참조하십시오. 문제를 설명하는 데 도움이되는 몇 가지 유용한 예제가 있습니다.

대신 전달 된 항목이 값으로 전달됩니다. 하지만 값으로 전달 된 항목 자체는 참조입니다. 기능 검사 아래

JSFiddle example

5
function isLinkExpiryDateWithinRange(value) { 
    // format: mm.dd.yyyy; 
    value = value.split("."); 
    var todayDate = new Date(), 
     endDate = new Date(todayDate.getFullYear(), todayDate.getMonth() + 6, todayDate.getDate() +1); 
     date = new Date(value[2], value[0]-1, value[1]); 

    return todayDate < date && date < endDate; 
} 

isLinkExpiryDateWithinRange("12.24.2012"); // true 
isLinkExpiryDateWithinRange("12.24.2020"); // false 
+0

해 주셔서 감사합니다. –

2

은 선택한 날짜는 오늘 5 일 이내 인 경우. 사용 된 날짜 형식은 "DD-MM-YYYY"입니다. value.split ('-') [1] 순서와 분할 문자를 변경하여 모든 형식을 사용할 수 있습니다.

function showMessage() { 
     var value = document.getElementById("invoiceDueDate").value; 
     var inputDate = new Date(value.split('-')[2], value.split('-')[1] - 1, value.split('-')[0]); 
     var endDate = new Date(); 
     endDate.setDate(endDate.getDate() + 5);// adding 5 days from today 
     if(inputDate < endDate) { 
      alert("If the due date selected for the invoice is within 5 days, and express settlement fee will apply to this transaction."); 
     } 

    }