program tip

Javascript에서 날짜 비교는 어떻게합니까?

radiobox 2020. 8. 11. 08:15
반응형

Javascript에서 날짜 비교는 어떻게합니까? [복제]


중복 가능성 :
JavaScript로 두 날짜 비교

자바 스크립트에서 두 날짜를 비교하고 싶습니다. 몇 가지 조사를 해왔지만 찾을 수있는 것은 현재 날짜를 반환하는 방법뿐입니다. 오늘과 관련이없는 두 개의 개별 날짜를 비교하고 싶습니다. 어떻게하나요?

var startDate = Date(document.form1.Textbox2);

if (date1.getTime() > date2.getTime()) {
    alert("The first date is after the second date!");
}

Date 객체에 대한 참조


new Date('1945/05/09').valueOf() < new Date('2011/05/09').valueOf()

JavaScript의 날짜는 나머지 데이터 유형에서 사용하는 동일한 비교 연산자 (>, <, <=,> =, ==,! =, ===,! ==)를 사용하여 비교할 수 있습니다.

날짜 A와 B가 두 개인 경우 A가 B보다 과거로 더 거슬러 올라가면 A <B입니다.

그러나 문제가있는 것은 문자열을 날짜로 바꾸는 것 같습니다. 새 날짜에 대한 인수로 문자열을 전달하면됩니다.

var someDate = new Date("12/03/2008");

또는 원하는 문자열이 양식 필드의 값인 경우 다음과 같을 수 있습니다.

var someDate = new Date(document.form1.Textbox2.value);

해당 문자열이 JavaScript가 날짜로 인식하는 것이 아닌 경우에도 여전히 Date 객체를 얻지 만 "유효하지 않음"이됩니다. 다른 날짜와 비교하면 false가 반환됩니다. 문자열로 변환하면 "잘못된 날짜"가됩니다. getTime () 함수는 NaN을 반환하고 날짜 자체에서 isNaN ()을 호출하면 true를 반환합니다. 이것은 문자열이 유효한 날짜인지 확인하는 쉬운 방법입니다.


Date 객체에서 getTime () 메서드를 사용하여 1970 년 1 월 1 일에 상대적인 타임 스탬프 (밀리 초)를 가져올 수 있습니다. 두 날짜를 정수 타임 스탬프로 변환하는 경우 차이를 빼서 비교할 수 있습니다. 결과는 밀리 초 단위이므로 초는 1000으로 나누고 분은 60으로 나누면됩니다.


=== 또는! == 대신 Date valueOf 메서드를 사용하고 싶습니다.

===는 내부 Object의 참조를 비교하고 날짜에 관한 것은 없습니다.


function fn_DateCompare(DateA, DateB) {     // this function is good for dates > 01/01/1970

    var a = new Date(DateA);
    var b = new Date(DateB);

    var msDateA = Date.UTC(a.getFullYear(), a.getMonth()+1, a.getDate());
    var msDateB = Date.UTC(b.getFullYear(), b.getMonth()+1, b.getDate());

    if (parseFloat(msDateA) < parseFloat(msDateB))
      return -1;  // lt
    else if (parseFloat(msDateA) == parseFloat(msDateB))
      return 0;  // eq
    else if (parseFloat(msDateA) > parseFloat(msDateB))
      return 1;  // gt
    else
      return null;  // error
}

    function validateform()
    {
     if (trimAll(document.getElementById("<%=txtFromDate.ClientID %>").value) != "") {
   if (!isDate(trimAll(document.getElementById("<%=txtFromDate.ClientID %>").value)))
         msg = msg + "<li>Please enter valid From Date in mm/dd/yyyy format\n";
   else {
       var toDate = new Date();
       var txtdate = document.getElementById("<%=txtFromDate.ClientID %>").value;
       var d1 = new Date(txtdate)
   if (Date.parse(txtdate) > Date.parse(toDate)) {                   
         msg = msg + "<li>From date must be less than or equal to today's date\n";
   }
  }
}

     if (trimAll(document.getElementById("<%=txtToDate.ClientID %>").value) != "") {
            if (!isDate(trimAll(document.getElementById("<%=txtToDate.ClientID %>").value)))
                msg = msg + "<li>Please enter valid To Date in mm/dd/yyyy format\n";
            else {
                var toDate = new Date();
                var txtdate = document.getElementById("<%=txtToDate.ClientID %>").value;
                var d1 = new Date(txtdate)

                if (Date.parse(txtdate) > Date.parse(toDate)) {
                    msg = msg + "<li>To date must be less than or equal to today's date\n"; 
                  }
                 }
                }

이 코드를 사용하여 MM / DD / YYYY 형식의 두 날짜 중에서 가장 높은 날짜 값을 확인할 수 있습니다.

function d_check() {
    var dl_sdt=document.getElementIdBy("date_input_Id1").value; //date one
    var dl_endt=document.getElementIdBy("date_input_Id2").value; //date two

    if((dl_sdt.substr(6,4)) > (dl_endt.substr(6,4))) {
        alert("first date is greater");
        return false;
    }

    else if((((dl_sdt.substr(0,2)) > (dl_endt.
        substr(0,2)))&&(frdt(dl_sdt.substr(3,2)) > (dl_endt.substr(3,2))))||
        (((dl_sdt.substr(0,2)) > (dl_endt.substr(0,2)))&&
        ((dl_sdt.substr(3,2)) < (dl_endt.substr(3,2))))||
        (((dl_sdt.substr(0,2)) == (dl_endt.substr(0,2)))&&((dl_sdt.substr(3,2)) > 
        (dl_endt.substr(3,2))))) {
            alert("first date is greater");
        return false;
    }

    alert("second date is digher");
    return true;
}

/ * for check this .... 양식을 만들고 두 개의 날짜 입력에 ID를 제공합니다. 날짜 형식은 mm / dd / yyyy 또는 mm-dd-yyyy 또는 mm : dd : yyyy 또는 mm.dd.yyyy 여야합니다. . * /


이를 구현하기 위해 다음 스크립트 코드를 추가 할 수 있습니다.

if(CompareDates(smallDate,largeDate,'-') == 0) {
    alert('Selected date must be current date or previous date!');
return false;
}

function CompareDates(smallDate,largeDate,separator) {
    var smallDateArr = Array();
    var largeDateArr = Array(); 
    smallDateArr = smallDate.split(separator);
    largeDateArr = largeDate.split(separator);  
    var smallDt = smallDateArr[0];
    var smallMt = smallDateArr[1];
    var smallYr = smallDateArr[2];  
    var largeDt = largeDateArr[0];
    var largeMt = largeDateArr[1];
    var largeYr = largeDateArr[2];

    if(smallYr>largeYr) 
        return 0;
else if(smallYr<=largeYr && smallMt>largeMt)
    return 0;
else if(smallYr<=largeYr && smallMt==largeMt && smallDt>largeDt)
    return 0;
else 
    return 1;
}  

참고 URL : https://stackoverflow.com/questions/338463/how-do-i-do-a-date-comparison-in-javascript

반응형