Javascript에서 날짜 개체를 비교할 때 동일한 날짜를 비교해도 true가 반환되지 않는다는 것을 발견했습니다.
var startDate1 = new Date("02/10/2012");
var startDate2 = new Date("01/10/2012");
var startDate3 = new Date("01/10/2012");
alert(startDate1>startDate2); // true
alert(startDate2==startDate3); //false
이 날짜의 동일성을 어떻게 비교할 수 있습니까? Date
날짜를 비교하기 위해 타사 JS를 사용하는 것이 적절하지 않기 때문에 타사 라이브러리가 아닌 JS 의 기본 개체를 활용하는 데 관심 이 있습니다.
답변
두 번째 경우에는 실제 날짜 개체가 비교되고 두 개체가 서로 같지 않기 때문입니다. 번호를 강요하십시오.
alert( +startDate2 == +startDate3 ); // true
보다 명시 적으로 숫자로 변환하려면 다음 중 하나를 사용하십시오.
alert( startDate2.getTime() == startDate3.getTime() ); // true
또는
alert( Number(startDate2) == Number(startDate3) ); // true
아, 사양에 대한 참조 : §11.9.3 기본적으로 객체를 비교할 때 말하는 추상 동등 비교 알고리즘obj1 == obj2
은 동일한 객체를 참조하는 경우에만 true이고 그렇지 않으면 결과는 false입니다.
답변
getTime()
에포크 (즉, 숫자)에서 반환되는 밀리 초 수를 사용하여 날짜를 비교합니다 .
var startDate1 = new Date("02/10/2012");
var startDate2 = new Date("01/10/2012");
var startDate3 = new Date("01/10/2012");
alert(startDate1.getTime() > startDate2.getTime()); // true
alert(startDate2.getTime() == startDate3.getTime()); //true
또한 Date
문자열 표현에 의존하는 대신 명시적인 연도 / 월 / 일 번호를 사용하는 생성자를 사용하는 것을 고려 하십시오 (참조 : Date.parse () ). 그리고 JavaScript의 날짜는 항상 클라이언트 (브라우저) 시간대를 사용하여 표시됩니다.
답변
getTime 메서드를 사용할 필요가 없습니다. 다른 날짜 개체에서 날짜 개체를 뺄 수 있습니다. 밀리 초 차이를 반환합니다 (초가 나중 날짜이면 음수).
var startDate1 = new Date("02/10/2012");
var startDate2 = new Date("01/10/2012");
var diff= (startDate1 -startDate2)
// 날짜의 타임 스탬프가 같으면 0으로 평가됩니다.
답변
실제 밀리 초를 비교할 수 있습니다.
alert(startDate2.getTime() === startDate3.getTime());
답변
valueOf () 함수를 사용할 수도 있습니다.
var startDate1 = new Date("02/10/2012").valueOf();
var startDate2 = new Date("01/10/2012").valueOf();
var startDate3 = new Date("01/10/2012").valueOf();
alert(startDate1>startDate2); // 1326150000000 > 1328828400000 true
alert(startDate2==startDate3); // 1328828400000 > 1326150000000 false