SeonHyungJo / Tip-Note

:round_pushpin: 개발을 하면서 느끼고 알게된 Tip:round_pushpin:
7 stars 0 forks source link

Safari에서 new Date()는 다르다? #69

Open SeonHyungJo opened 4 years ago

SeonHyungJo commented 4 years ago

모든 개발자 분들이 그런 건 아니지만, 날짜 관련 이슈에 대해 골머리를 썩으신 분들은 더 이상 힘들지 않고 싶지 않아 Moment.js나 day.js를 사용해서 날짜 포맷팅을 진행한다.

여러 이슈 중에서 오늘은 IOS에서 발생하는 이슈만 작성해보려고 한다.

우리는 서버에서 내려주는 데이터를 가지고 날짜를 계산하거나 포맷팅을 해서 사용한다. 그러기 위해서 Date 객체로 만들어 준다.

아래는 Chrome에서 결과이다.

const date = new Date("2020-09-01 00:00:00");
console.log(date.getDate() + '. ' + date.getMonth() + ' ' + date.getFullYear());
console.log(date) // Tue Sep 01 2020 00:00:00 GMT+0900 (대한민국 표준시)

위와 같이 잘 출력이 되는 것을 볼 수 있다.

그러나 Safari에서 동일하게 해보자. 위의 결과와는 다르다.

safari 결과

이는 ES5 Spec에서는 추가가 되었지만 Safari에는 적용이 안되어 있는 듯하다.

이를 해결하는 방법은 생각보다 단순하다. 날짜를 2020-09-01T00:00:00 또는 2020/09/01 00:00:00와 같은 형식으로 만들어 주면 된다.

const date = new Date("2020-09-01T00:00:00");
// or
const date = new Date("2020/09/01 00:00:00");

Reference