[JS] IE8 및 Safari 에서 new Date() 시 NaN 오류 이슈

2021. 11. 1. 14:48JS

아이패드와 몇몇 아이폰 기종에서 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에서 확인 할 수 있다.

https://momentjs.com/docs/#/query/

 

Moment.js | Docs

moment.relativeTimeThreshold(unit); // getter moment.relativeTimeThreshold(unit, limit); // setter duration.humanize has thresholds which define when a unit is considered a minute, an hour and so on. For example, by default more than 45 seconds is consider

momentjs.com

'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