일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- memory
- State
- virtual Dom
- EventListener
- 프로젝트
- deep
- 꿀팁
- Dive
- BOJ
- API
- Hook
- Java
- 요청
- 개발
- 프로그래머스
- javascript
- 상태
- 상태 끌어올리기
- LeetCode
- DoM
- axios
- 가상 DOM
- 원리
- 백준
- programmers
- react
- 유용한 사이트
Archives
- Today
- Total
탄탄한 기본기!
javaScript - Date 본문
표준 빌트인 객체인 Date는 날짜와 시간을 위한 메서드를 제공하는 빌트인 객체이면서 생성자 함수다.
1. Date 생성자 함수
Date는 생성자 함수라고 설명했다. 따라서 Date 생성자 함수로 생성할 수 있고, 이렇게 생성한 Date 객체는 내부적으로 날짜와 시간을 나타내는 정수 값을 갖는다. 그리고 이 정수 값은 1970년 1월 1일 0시를 기준으로 하며, 이 기준 시각으로부터 현재까지 흐른 시간을 ms 값으로 가지고 있게 된다. 만약 현재 날짜와 시간이 아닌 다른 날짜와 시간을 다루고 싶은 경우엔 Date 생성자 함수에 명시적으로 해당 날짜와 시간 정보를 인수로 지정해줄 수 있다.
이러한 Date 객체를 만드는 방법은 총 4가지가 존재한다.
- new Date()
- new Date(ms)
- new Date(dateString)
- new Date(year, month[, day, hour, minute, second, ms])
new Date(); // -> Mon Jul 06 2020 01:03:18 GMT+0900 (대한민국 표준시)
new Date(0); // -> Thu Jan 01 1970 09:00:00 GMT+0900 (대한민국 표준시)
new Date('May 26, 2020 10:00:00');
// -> Tue May 26 2020 10:00:00 GMT+0900 (대한민국 표준시)
new Date('2020/03/26/10:00:00');
// -> Thu Mar 26 2020 10:00:00 GMT+0900 (대한민국 표준시)
new Date(2020, 2); // 월을 나타내는 2는 3월을 의미한다. 2020/3/1/00:00:00:00
2. Date 메서드
Date 객체에는 현재 시각을 ms단위로 반환하거나, 년, 월, 일, 요일, 시간(시, 분, 초) 등을 원하는 형식에 맞게 반환하고 또 직접 설정해줄 수도 있도록 도와주는 메서드들을 제공한다.
대표적으로 Date.now 같은 경우에는 1970년 1월 1일 00:00:00(UTC)을 기점으로 현재 시간까지 경과한 ms(밀리초)를 숫자로 반환한다.
console.log(Date.now()); // 1622350957559
아래는 Date 객체의 메서드(정적 메서드, 프로토타입 메서드)의 목록이다. 이들을 달달 외워서 사용하는 것은 매우 비효율적이기 때문에, 이러한 메서드들이 있다는 것만 알면 후에 언제든 필요할 때에 찾아보면서 사용할 수 있다.
따라서 각각의 메서드를 외우기보다는 이러한 기능을 하는 메서드들이 존재한다는 것을 알아두는 것을 목표로 하면 좋을 것 같다.
정적 메서드
- Date.now: 1970년 1월 1일 00:00:00(UTC)을 기점으로 현재 시간까지 경과한 밀리초를 숫자로 반환한다.
- Date.parse: 인수로 전달된 지정 시간 인수까지의 밀리초를 숫자로 반환한다.
- Date.UTC: 인수로 전달된 지정 시간까지의 밀리초를 숫자로 반환하며 인수는 로컬 타임(KST)이 아닌 UTC로 인식된다.
프로토타입 메서드
- Date.prototype.get(set)FullYear: Date 객체의 연도를 나타내는 정수를 반환(설정)한다.
- Date.prototype.get(set)Month: 월에 해당하는 정수를 반환(설정)한다. (1월은 0, 12월은 11)
- Date.prototype.get(set)Date: 날짜(1 ~ 31)를 나타내는 정수를 반환(설정)한다.
- Date.prototype.get(set)Day: 요일(0 ~ 6)을 나타내는 정수를 반환한다.
- Date.prototype.get(set)Hours: 시간(0 ~ 23)을 나타내는 정수를 반환한다.
- Date.prototype.get(set)Minutes: 분(0 ~ 59)을 나타내는 정수를 반환한다.
- Date.prototype.get(set)Seconds: 초(0 ~ 59)를 나타내는 정수를 반환한다.
- Date.prototype.get(set)Milliseconds: 밀리초(0 ~ 999)를 나타내는 정수를 반환한다.
- Date.prototype.get(set)Time: Date 객체의 시간까지 경과된 밀리초를 반환한다.
- Date.prototype.getTimezoneOffset: UTC와 Date 객체에 지정된 Locale 시간과의 차이를 분 단위로 반환한다.
- Date.prototype.toDate(Time/ISO/Locale/LocaleTime)String: 시간 정보를 각각의 형식대로 String으로 정보를 반환한다.
3. Date 객체 사용 예시
아래 예시는 위 메서드들 중 일부를 이용해 현재 시간을 나타내는 예제이다.
const today = new Date();
const dayNames = ["(일요일)", "(월요일)", "(화요일)", "(수요일)", "(목요일)", "(금요일)", "(토요일)"];
const day = dayNames[today.getDay()];
const year = today.getFullYear();
const month = today.getMonth() + 1;
const date = today.getDate();
let hour = today.getHours();
let minute = today.getMinutes();
let second = today.getSeconds();
// 12시간제
hour %= 12;
hour = hour || 12;
hour = hour < 10 ? "0" + hour : hour;
minute = minute < 10 ? "0" + minute : minute;
second = second < 10 ? "0" + second : second;
const now = `${year}년 ${month}월 ${date}일 ${day} ${hour}:${minute}:${second}`;
console.log(now); // 2021년 5월 30일 (일요일) 01:49:52
// 두 날짜 사이의 일 수 차이 구하기
const diffDays = (a, b) => (b.getTime() - a.getTime()) / (1000 * 3600 * 24);
console.log(diffDays(new Date("2021/01/01"), new Date("2021/12/31"))); // 364 (일 수 차이)
'개인 공부 > JS (자바스크립트)' 카테고리의 다른 글
javaScript - Symbol 타입 (0) | 2021.06.01 |
---|---|
Node.js와 Jest 실습 (0) | 2021.06.01 |
javaScript - String (0) | 2021.05.30 |
javaScript - Math (0) | 2021.05.29 |
javaScript - Number (0) | 2021.05.29 |
Comments