-
Safari Invalid Date 문제 (new Date()에 공백 파싱 이슈)개발/이슈 처리 2024. 1. 2. 15:07
광고 세부 내역 페이지의 날짜 부분에 NaN (not a number) 오류가 있다는 이슈가 올라왔습니다.
뭘까 싶어서 해당 페이지에 접속해 봤는데 잘 나옵니다.
사파리에서 접속하면 그렇게 된다길래 들어가 봤더니, 과연 일수가 표기되어야 할 곳에 NaN이 나오네요.
뜯어보니 `new Date`에 들어가는 문자열 양식이 문제였습니다.
'`2024-01-02 `' 이런 식으로 끝에 공백 하나가 들어가 있었어요.
이게 크롬이나 다른 브라우저에서는 파싱이 잘 되는데, Safari에서는 파싱을 못하고 `Invalid Date`를 띄웁니다.
그러니 해당 문자열로 숫자 계산을 하려고 하면 JS는 `NaN`을 내뱉겠죠.
크롬은 알아서 trim해서 파싱을 해주는 것 같은데, 사파리는 엄격한 기준을 갖고 있는 것 같네요...
추가로, 예전에는 Safari에서 dash(-)로 이루어진 연월일 날짜 형식도 못 알아들었다고 하네요. (하지만 `2024-01-01T00:00:00`과 같이 완전히 ISO8601 표준을 맞추면 파싱됩니다)
`2024/01/01` 형식으로 작성해야만 인식했었다고 하는데, 지금은 dash를 저렇게 써도 알아듣는 걸 보니 패치했나봅니다.
날짜를 다룰 때는 moment 라이브러리를 쓰는 것이 이런 크로스 브라우저 포맷팅 오류를 줄이는 데엔 가장 좋은 것 같네요. (저희 개발팀 선배의 말씀.. 👍)
`moment(date).format('YYYY-MM-DD')` 방식으로 해결했습니다.
'개발 > 이슈 처리' 카테고리의 다른 글
비동기 api 요청이 동기적으로 작동할 때 (ASP.NET SessionState 접근 문제) (0) 2024.03.13