티스토리 뷰
github api에서 받아온 커밋 날짜 데이터가 있다.
// 편의를 위한 자바스크립트화
let gitDate = "2021-04-02T15:00:37Z"
그리고 5일 후를 나타내줄 수 있는 데이터를 만들기 원한다.
답은 아래와 같이 나와야 한다.
let resultDate = "2021.04.07"
물론 백엔드쪽에 원하는 데이터를 주문할 수 있지만, 그렇지 못할 경우도 많으니 해결해보자.
우선, moment.js라는 아주 유우명한 패키지를 사용할것이다.
이 패키지는 시간을 아주 쉽게 다루게 해준다.
예를 들어, 아래와 같이 입력하면 포맷이 바뀐다.
let userDate = "2021.04.02"
moment(userDate, "YYYY.MM.DD").format("YYYY-MM-DD")
// 2021-04-02
우리가 하려는 5일 더하기는 아래와 같이 한다
let userDate = "2021.04.02"
moment(userDate, "YYYY.MM.DD").add(5, 'days').format('YYYY.MM.DD')
// 2021.04.07
// format을 시켜주지 않는다면 moment객체가 출력된다
그렇다면 아래와 같이 적으면 될 것이다.
let gitDate = "2021-04-02T15:00:37Z"
let subDate = gitDate.substr(0, 10) //T15:00:37Z 잘라내기
let result = moment(subDate, "YYYY-MM-DD").add(5, 'days').format('YYYY.MM.DD')
// 2021.04.07
여기까지야 괜찮은데, 문제는 react-nice-dates라는 캘린더 패키지를 사용할 때 일어났다.
원래는 선택 한 날짜가 체크되는 형식인데
이를 내 데이터에서 커밋 한 날짜를 추출해 위와 같이 뿌려주기로 했다.
그렇다면 우선 어떤 형식으로 변환시켜야 체크될지 클릭을 콘솔로그로 받아보자.
Tue Jun 08 2021 00:00:00 GMT+0900 (대한민국 표준시)
주의해야 할 점은, 이것이 문자열이 아닌 객체라는 것이다.
그렇기 때문에, 문자열인 데이터를 전부 시간 객체로 변환시켜주어야 한다.
let gitDate = "2021-04-02T15:00:37Z"
Date.parse(gitDate.substr(0, 10))
// 1617321600000
Date.parse는 문자열로 된 날짜를 분석하며, 잘못된 형식이면 NaN가 반환
우선 이렇게 파싱하면 1617321600000가 된다.
그리고 아래와 같이 시간 객체로 변환하자.
const finalDate = new Date(1617321600000)
// Fri Apr 02 2021 09:00:00 GMT+0900 (대한민국 표준시)
이제 전부 시간 객체로 변환이 됐으니, 원하는 대로 달력에 표시할 수 있게 됐다.
사실 더미데이터로 무작정 연습한 것 이기 때문에,
실제로 깃허브 api가 시간 객체로 넘겨주는지, 문자열로 넘겨주는지는 잘 모른다.
더 어려운 상황에서 이런식으로 해결할 수 있다는 것을 알았으면 좋겠다.
중요한건
형식이 객체인지 문자열인지 헷갈리지 말아야 한다는것!!
'Basic_Studies > JavaScript' 카테고리의 다른 글
[JavaScript] 새로고침 할 때 마다 이미지 캐시 삭제하기(feat.카페24) (0) | 2022.07.09 |
---|---|
[JavaScript] 자바스크립트 불변성, 가변성 (0) | 2021.03.20 |
[JavaScript] null, undefined, undeclared 차이 (0) | 2021.02.28 |
[JavaScript] 모듈 export, import (0) | 2021.01.08 |
[JavaScript] 구조 분해 할당(Destructuring assignment) (0) | 2020.12.15 |
- Total
- Today
- Yesterday
- 자바스크립트
- css 글래스모피즘
- vscode venv
- 10989 파이썬
- nextjs 스크롤
- 백준 10989 파이썬
- 파이썬 flask
- bs4 크롤링
- react router
- getserversideprops redirect
- 화이팅
- 움직이는 글래스모피즘
- Til
- dvd 효과
- 리액트
- 글래스모피즘 구현
- nextjs 파라미터 넘기기
- 리액트 라우터
- 리액트 컴포넌트
- 파이썬 크롤링
- 파이썬 정렬
- next.js 리다이렉트
- NextJS
- nuxt 공식문서
- 리액트 파라미터 넘기기
- 글래스모피즘 애니메이션 구현
- 카페음료테스트
- nuxt 공식문서 한글
- 리액트 스크롤
- css marquee
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |