티스토리 뷰

반응형

2021-01-13T01:28:30 이라는 문자열을 Date 포맷으로 변경할 때, 다음과 같이 Safari에서의 결과가 잘못 표시되는 현상이 있다.

Firefox
Chrome
Safari

Safari에서는 timezone 값을 Chrome 등 다른 브라우저와 다르게 처리하여 발생하는 것으로 보인다.

해결하려면 국내 기준으로 시간 문자열 뒤에 +09:00를 추가하면 된다.

const datetimeString = '2021-01-13T01:28:30';
new Date(`${datetimeString}+09:00`);

 

하지만 고정 값을 넣는 것이 꺼려진다면 다음과 같이 timezone 값을 입력 시간에 더해주면 된다.

이 경우에는 timezone 식별자인 Z를 시간 문자열 뒤에 추가로 붙여준다.

const datetimeSring = '2021-01-13T01:28:30';
new Date(new Date(`${datetimeString}Z`).getTime() + new Date().getTimezoneOffset() * 60 * 1000);

 

출처: stackoverflow.com/a/54211231/3422425

반응형
댓글