혹시 알고 계셨나요?
브라우저마다 날짜를 처리하는 방식에 차이가 있다는 점, 의외로 많이들 놓치곤 하시더라고요. 예를 들어, Safari는 날짜 파싱에서 좀 더 엄격한 편이고, Chrome이나 Firefox는 비교적 유연하게 처리합니다. 그래서 Safari에서만 예상치 못한 Invalid Date 오류가 발생할 수 있어요.
이 문제를 해결하려면, ISO 8601이라는 국제 표준을 따라야 하는데요. 이 형식을 사용하면 모든 브라우저에서 일관된 결과를 얻을 수 있답니다.
예를 들어, 다음과 같은 문자열로 '2024-10-22, 15:05:00'
날짜를 표현했을 때 문제가 발생합니다.
아래 코드를 safari 와 chrome의 개발자 도구에서 각각 실행해보세요.
const currentDate = '2024-10-22, 15:05:00'
console.log(new Date(current))
Chrome에서는 이 문자열을 new Date(current)
를 사용하여 올바른 Date 객체로 변환할 수 있지만, Safari에서는 이를 Invalid Date
로 반환합니다. 이는 Safari가 해당 형식을 올바르게 인식하지 못하기 때문입니다.
이 문제를 해결하기 위해, ISO 8601 표준 날짜 형식을 사용해야합니다.
ISO 8601 는 YYYY-MM-DDTHH:mm:ss
형식을 따릅니다. 여기서 T
는 날짜와 시간 부분을 구분합니다. (문자열 끝에 붙어있는 Z
는 Zulu time 으로 UTC+0 시간을 의미합니다.)
따라서 current
를 ISO 8601 표준에 맞춰 아래와 같이 수정해야 모든 브라우저에서 정상적인 데이트 객체를 생성할 수 있습니다.
const current = '2024-10-22T15:05:00';
console.log(new Date(current)) // 모든 브라우저에서 데이트 객체 생성 가능