반응형
사람들이 현재 날짜를 구할 때 Date() 문법을 많이 사용합니다.
하지만 어딘가 조금 잘못 되었다고 생각이 들 때가 있으실겁니다..
JavaScript
1955년 자바스크립트 창조주 님께서 10일만에 타이핑을 하여 만드셨다고 합니다.. (어우.. 범접 불가하신 분이군요..)
자바 문법을 그대로 베껴서 만들었기에 가능한 것 이었다고 합니다.
Date()
그 안에서!! Date date = new Date(); 자바 내장 함수 중 Util.date 가 있죠... 이것도 그대로 가져온 것이라고 합니다.
자바에서는 현재 이 문법이 좋지 않다고 하기 때문에 사용하지 않는다고 해요..
레거시 프로젝트에서는 많이들 보셨겠지만 요즘은 java.time.Instant 를 사용한다고 합니다.
하지만 자바스크립트는 그대로 사용하고 있죠...
문제점
- new Date() 형식이 너무 올드합니다.
RFC 형식을 사용하여 이상한.. 2022-10-11T10:12:44.283Z 이런 형식을 담고 있습니다.
요즘은 ISO 형식을 많이 사용하기 때문에 toISOString() 을 뒤에 붙여서 사용합니다.
var date = new Date();
console.log(`RFC : ${date}`); // Tue Oct 11 2022 19:15:39 GMT+0900 (대한민국 표준시)
console.log(`ISO : ${date.toISOString()}`); // 2022-10-11T10:15:39.784Z
- 날짜 포맷 변경이 귀찮음
date.getFullYear() // 년도
date.getMonth() // 월
date.getDate() // 일
- 0월이 1월입니다... (+1 을 해줘야 함)
// 현재 10월
date.getMonth() // 9
date.getMonth() + 1 // 10 (이렇게 사용해야합니다..)
- 시간 덧셈이 이상함
var date = new Date(2022, 9, 31)
date.setMonth(date.getMonth() + 1)
console.log(date)
// 답은? 11월 31이 없어서 그런지 12월 1일이 출력됨...
해결방법
moment 같은 라이브러리 사용하면 됩니다.
하지만 기본 문법에서도 살펴봐야겠죠?
- 날짜 포맷팅 시 Intl 사용하시면 편합니다. (Intl 내에서도 포맷팅 방법이 여러개 입니다.)
var date = new Date();
var a = new Intl.DateTimeFormat('kr').format(date);
conosle.log(a); // 2022.10.11
- 시간 차 쉽게 표현 가능 (Intl)
var date = new Date();
var a = new Intl.RelativeTimeFormat().format(-10, 'days');
console.log(a); // 10일 전
제가 좋아하는 유튜버님인 코딩애플님 영상을 보고 작성했습니당
재밌게 설명해주시고 좋아요 히히
반응형
'Computer > Front-End' 카테고리의 다른 글
[Encoding] 📚 BOM (Byte Order Mark) (1) | 2022.12.14 |
---|---|
[JavaScript] 📚 배열 음수 인덱스 사용하기 / 파이썬처럼 배열 사용하기 / at() / 최신 문법 / Array / index (0) | 2022.10.11 |
[React] 📚 리액트 생성 후 필요 없는 것들 정리하기 (0) | 2022.10.04 |
[Java] Swing / UI / 자바 / 스윙 / 자바 스윙 / Java Swing (0) | 2022.10.04 |
[React] 리액트가 라이브러리인 이유? 라이브러리 vs 프레임워크 (0) | 2022.09.26 |