2012-11-02 4 views
1

자바 스크립트 비교에 문제가 있습니다. 10 월 31 일과 11 월 1 일에 대해 Date 객체를 만들고 각 객체에 대한 getTime()은 동일한 값을 반환하고 greater-than/less-than 연산자는 날짜를 동일하게 간주합니다. 여기자바 스크립트 날짜가 이상하다

d1 = new Date(2012, 10, 31, 0, 0, 0, 0); 
d2 = new Date(2012, 11, 1, 0, 0, 0, 0); 
document.write(d1.getTime() + "<br />"); 
document.write(d2.getTime() + "<br />"); 
document.write((d1 < d2) + "<br />"); 
document.write((d1 > d2) + "<br />"); 

그리고 출력된다 : 여기 내 코드는

1354320000000 
1354320000000 
false 
false 

동일한 코드가 다른 달 엔딩 주위에 잘 작동, 문제의 원인이 바로이 두 날짜 것으로 보인다.

도움을 주셨습니다.

+3

힌트 : JavaScript는 월 기준으로 0입니다. – j08691

답변

6

11 월 (10)에는 31 일이 없으므로 12 월 (11)으로 넘어갑니다.

new Date(2012, 10, 31, 0, 0, 0, 0) 
//Sat Dec 01 2012 00:00:00 GMT+0200 (FLE Standard Time) 

//more wrapping: 
new Date(2012, 10, 35, 0, 0, 0, 0) 
//Wed Dec 05 2012 00:00:00 GMT+0200 (FLE Standard Time) 
+0

많은 감사의 말로, 저는 월별 제로 인덱스를 고려하지 않았습니다. 지금 완벽하게 이해합니다. – user431931