라이브러리를 사용하지 않고 자바스크립트에서 날짜 비교를 할 때 어떻게 하는 게 가장 정확할까? 최근에 회사에서 새로운 기능을 제작하는데 날짜 비교가 굉장히 중요한 기능이 있어서 지금까지 사용하던 방식들이 맞는지 무엇이 가장 정확한지에 대한 의문이 생겨 글을 정리한다.
검색했을 때 가장 많이 보이는 방법은 이런 식으로 new Date()를 사용하여 비교하는 방식이다.
let date1 = new Date("2022-12-31");
let date2 = new Date("2023-01-01");
if (date2 > date1) {
console.log("date2 is greater than date1");
} else {
console.log("date1 is greater than or equal to date2");
}
이렇게 사용할 때도 최상의 문자열 형식인 날짜 ISO 형식(예: YYYY-MM-DD 또는 YYYY-MM-DDTHH:MM:SS)을 사용해야 한다. 근데 ISO형식을 사용하는 것만으로는 안정적인 작동을 한다고 보장할 수 없다. 왜냐하면 문자열은 때때로 UTC로 때로는 현지 시간으로 구문이 해석되기 때문이다(브라우저 공급업체 및 버전 기준)
결론적으로 가장 최적으로 날짜를 비교하는 방법은 Date.getTime()을 사용하는 것이다.
let date1 = new Date("2022-12-31");
let date2 = new Date("2023-01-01");
console.log(date1.getTime()); // 1672444800000
console.log(date2.getTime()); // 1672531200000
if (date2.getTime() > date1.getTime()) {
console.log("date2 is greater than date1");
} else {
console.log("date1 is greater than or equal to date2");
}
.getTime() 1970년 1월 1일 이후의 밀리초 수를 반환하므로 두 날짜를 숫자로 직접 비교할 수 있고 그 숫자는 고정적이다. 날짜를 문자열로 비교하거나 다른 날짜 비교 방법을 사용하는 것보다 더 안정적이고 효율적이다. 두 날짜의 .getTime() 값을 빼면 어느 날짜가 더 크거나 같은지 쉽게 확인할 수 있으므로 JavaScript에서 날짜 비교를 수행하는 가장 좋은 방법이다!
그리고 상황에 맞는 날짜나 시간 관련 라이브러리를 사용하는 것도 좋은 방법이다.
'개발 > JavaScript' 카테고리의 다른 글
[JavaScript] 인자 개수가 자유로운 함수 선언(arguments) (0) | 2023.02.05 |
---|---|
[JavaScript] parameter vs argument (0) | 2023.02.04 |
[JavaScript] this란 무엇인가? (0) | 2022.11.12 |
[JavaScript] ES6 문법 (2) | 2022.11.11 |
[JavaScript] ES5 문법 (0) | 2022.11.10 |
댓글