2017-04-10 5 views
2

:날짜 비교 연산자 - 논리적 문제 나 간단한 JS 기능이

function checkTime() { 
    var d1 = new Date(); 
    var d2 = new Date('April 10, 2017 12:11:00'); 

    if (d1 < d2) { 
    $('#modalnew').modal('show'); 
    } else { 
    window.location.replace('https://www.example.php'); 
    } 
} 

그것은 잘 작동하지만 내가 날짜 비교를 이해하지 않습니다. 이것은 "멍청한"질문 일지 모르지만 Google에서 답변을 찾을 수 없습니다. F.E : - 아니 코드, 그냥 예 -

d1 (now) = April 10, 2017 12:22:00 
d2 (date set) = April 10, 2017 12:11:00 

가 왜 d1 적은 d2보다를하고 window.location을 활성화? 논리적 순서가 d1이면 d2보다 11 분 이상 길다. 어떤 매개 변수에서 정확히 비교합니까?

+0

이 도움이 될 : http://stackoverflow.com/questions/492994/compare-two-dates-with-javascript – Rajesh

+1

d1

+1

OPs 가정이 분명히 잘못되어 답변이 필요 없기 때문에 투표를 종료하십시오. –

답변

2

d1은 예상 결과 인 d2보다 작지 않으므로 window.location.replace이 실행됩니다.

(d1.valueOf()< d2.valueOf())으로 평가되는 날짜를 비교하는 동안. valueOf()00:00:00 UTC Thursday 1, January 1970의 시작부터 milliseconds에 시간을 제공 한 다음 비교합니다.

+0

아, 알았어, 계속해서 계산하면 현재 날짜는 항상 미래의 날짜보다 작습니까? – CodeNewb

+0

예, 특정 시간부터 측정 된 것입니다. –

+0

고마워요. 분명히 알 수 있습니다! :) 나는 당신의 대답을 오른쪽으로 표기 할 것입니다, 그것은 몇 분 안에 가능합니다. – CodeNewb

2

두 날짜를 비교하려면 지정된 날짜의 시간에 해당하는 숫자를 표준시에 따라 반환하는 Date.prototype.getTime() 메서드를 사용하는 것이 좋습니다.

각 날짜의 결과 번호 d1d2은 짧고 큰 날짜를 더 잘 설명합니다.

코드 :

function checkTime() { 
    var d1 = new Date(); 
    var d2 = new Date('April 10, 2017 12:11:00'); 

    d1.getTime() < d2.getTime() 
    ? $('#modalnew').modal('show') 
    : window.location.replace('https://www.example.php'); 
} 
+1

아니요, 잘못되었습니다. '<' and '>'을 사용하여 날짜를 비교할 수 있습니다. 문제를 일으키는'=='와'==='입니다 (날짜가 같더라도 항상 false를 반환합니다). –

+0

@SalmanA [Date.prototype.getTime()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) 메서드가 다음에 해당하는 숫자 값을 반환하는지 확인합니다. 보편적 인 시간에 따른 지정된 날짜의 시간. 그래서, 숫자 값을 '<' and '>'과 비교할 수 있습니다. –

+0

저는'Date'는 '<' and '>'(및 '<=' and '> =')을 사용하여 직접 비교할 수 있다고 말하고 있습니다. 이 연산자는 날짜의 경우'.getTime()'과 같은 값을 반환하는 뒤에서'.valueOf()'메서드를 호출합니다. 영업 코드가 정확하고 답이 중복됩니다. –

-1

More DetailDetail을 비교 한 후 getTime() 등을 사용하여 시간을 변환 자바 스크립트 에서 두 날짜를 비교하여, Working Demo