[JS] IE8 및 Safari 에서 new Date() 시 NaN 오류 이슈
2021. 11. 1. 14:48ㆍJS
아이패드와 몇몇 아이폰 기종에서 Date가 안나오고 NaN이라고 뜨는 이슈가 있다.
자바스크립트에서 흔히 사용하는 Date 객체에 String 타입의 날짜를 담아 사용할 때,
ex : new Date('2021-11-01');
사파리에서는 Invalid Date error를 내뱉는다.
해당 이슈를 해결하기 위해 moment.js 날짜 라이브러리를 사용했다.
moment.js를 사용하면 모든 기종 및 사파리에서도 사용 가능하다.
date 객체를 생성할 때 new Date(); 를 사용한다면
moment.js 에서는 moment();, moment(new Date());
를 사용하여 현재 날짜를 가져올 수 있다
yarn add moment
or
npm install moment
해당 라이브러리를 설치 한 후 아래와 같이도 사용할 수 있다.
[ 날짜 format ]
let date = '2021-11-01 03:11:22'; // 특정 시간으로 설정
moment(date).format("YYYY-MM-DD HH:mm:ss"); // 2021-11-01 03:11:22
moment(date).format("YYYY"); // 2021
moment(date).format("MM"); // 11
[ 날짜 더하기, 빼기 ]
var moveDate = 7;
moment(new Date(), 'YYYY-MM-DD HH:mm:ss').add(moveDate, 'days').toDate();
// 현재 날짜에서 +7일
moment(new Date(), 'YYYY-MM-DD HH:mm:ss').subtract(moveDate, 'days').toDate();
//현재 날짜에서 -7일
* moveDate가 음수일 경우 add를 사용해도 상관없다.
Date 객체에서는 8월이면 08로 넘어오지 않아서 앞에 자릿수 맞추느라 0을 붙혀줬었는데
moment에서는 따로 안 붙혀줘도 된다.
나머지 자세한 사항은 document에서 확인 할 수 있다.
'JS' 카테고리의 다른 글
[JS] `??` 와 `||` 연산자 (0) | 2023.07.24 |
---|---|
[JS] 웹 모바일에서 App 실행 (0) | 2021.11.01 |
[JS] File API (0) | 2021.07.27 |
[JS] event.stopPropagation(), event.preventDefault () 이해하기 (0) | 2021.07.27 |
[JS] emailjs 이메일 보내기 (0) | 2021.07.05 |