자바스크립트의 Date 동작(Safari)

오늘의 행동이 Chrome과 Safari에서 다르다는 사실을 오늘 깨달았습니다 ...
var dt = new Date('2018-11-28T11:30:30+0900');

브라우저별 거동



Chrome




보통으로 움직이네요.

Safari




어라? 안돼요.

사양 조사



Date - JavaScript | MDN 를 살펴봅니다.

구문



new Date();
new Date(value);
new Date(dateString);
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]));
new Date(dateString);의 dateString은 ISO8601 형식을 인식한다는 것입니다만 ...

대응책



결국 이 방법으로 대응했습니다. (2018-11-29 코멘트를 받아 수정)
var at = '2018-11-28T11:30:30+0900';
var dt = new Date(at.replace(/([\+|\-])([0-9]{2})([0-9]{2})$/,"$1$2:$3"));

타임존의 +hhmm 부분을 +hh:mm로 하면 Safari에서도 올바르게 인식해준다는 것이므로 +0900을 +09:00으로 변환하도록 했습니다.

Firefox에서도 확인했지만 괜찮습니다.

좋은 웹페이지 즐겨찾기