[JS] safari에서 new Date() 리턴 값이 Invalid Date 일 때 해결법

SJ·2022년 6월 14일
0

문제

어떠한 상품에 대한 경매, 비경매 구분을 위한 타이머 세팅 시 시간을 설정해주는 과정에서 데이터는 동일하게 내려오지만 chrome에서는 경매, safari에서는 경매 종료로 나오는 현상을 발견하였다. 경매 종료 시간과 현재 시간을 비교하여 나오는 남은 시간으로 타이머를 세팅하기 때문에 경매로 나오게 해야한다.

원인 분석

데이터는 문제없이 동일하게 내려오기 때문에 경매인지 판단하는 시간계산 로직을 디버깅하였더니 사파리에서는 new Date() 값이 Invalid Date로 리턴되어 남은 시간이 NaN으로 계산되었다.

해결

사파리에서는 크롬과 달리 new Date()를 할때
RFC822 포맷의 yyyy-mm-dd이 지원되지 않기 때문에
yyyy/mm/dd H:i:s 형태로 변경해서 계산해야했다.

기존 시간 계산 코드

//..

var now = new Date();
var end = new Date(endDate);
var leftTime = end - now;

if(leftTime > 0 ) {
//경매

} else {
//비경매

}

//..

변경 시간 계산 코드

//..

var now = new Date();
endDate = endDate.replace(/-/g, "/");
var end = new Date(endDate);

if(leftTime > 0 ) {
//경매

} else {
//비경매

}
profile
효율적이고 효과적이게

0개의 댓글