-
[JS] Safari에서 new Date 객체 Invalid Date 리턴 받는 경우Javascript 2021. 2. 13. 18:09
크로스 브라우징 이슈는 파도파도 끝이 없는 것 같다.
최근 날짜 관련한 이슈가 있어서 서버에서 날짜를 받아오도록 코드를 전부 수정했었다.
리턴 받는 데이터는 'yyyy-mm-dd H:i:s' 형태로 리턴받고 있다.
리턴 받은 날짜를 new Date() 객체 안에 인자로 넣었더니, 오류가 발생했다.
// 오류가 발생한 코드 new Date('2021-02-13 17:40:00'); // 예상 결과 값 // Sat Feb 13 2021 17:40:40 GMT+0900 (대한민국 표준시) // 실제 결과 값 // Invalid Date
위에서 발생한 오류는 크롬브라우저에서는 정상적으로 작동 했지만,
Safari 브라우저에서 Invalid Date 값을 리턴 받았다.
원인은 Safari 에서는 new Date 객체에서 RFC822 포맷의 DateType (yyyy-mm-dd)이 지원되지 않는 데이터 포맷이라고 한다.
따라서 포맷을 yyyy/mm/dd H:i:s 의 형태로 변경해서 사용해야 한다.
간단하게 정규식을 사용하여 포맷을 변경 후 사용하면 된다.
// 오류가 발생하지 않는 코드 var now = '2021-02-13 17:40:00'; now = now.replace(/-/g, "/"); // now: '2021/02/13 17:40:00' new Date(now); // 결과 값 // Chrome // Sat Feb 13 2021 17:40:00 GMT+0900 (대한민국 표준시) // Safari // Sat Feb 13 2021 17:30:00 GMT+0900 (KST)
개발하고 있는 플랫폼에 IE 사용자의 비율이 10%가 넘어가기 때문에
IE 하나로도 머리가 터질 것 같은데,
Safari까지 말썽이니, Safari가 새로운 IE가 될 것 같은 느낌이 강하게 든다.
'Javascript' 카테고리의 다른 글
[JS/AJAX] 서버에서 클라이언트 단으로 시간 가져오기 (0) 2021.02.07 [JS/jQuery] 스크롤 가장 하단으로 이동시키기 (0) 2021.01.28 [JS]도로명주소API를 활용해서 주소 검색 솔루션 만들기 (0) 2020.01.15