P4Ch6.표준 내장 객체- 날짜
날짜 인스턴스
1
2
3
const date = new Date();
console.log(date);
//Fri May 19 2023 21:17:14 GMT+0900 (한국 표준시)
new Date()
: 현재의 날짜와 시간 정보를 출력.
출력되는 시간은 실행 환경의 시스템 시간을 기준으로 한다.
1
2
3
const d1 = new Date(2023, 4, 19, 21, 9, 30);
console.log(d1);
//Fri May 19 2023 21:09:30 GMT+0900 (한국 표준시)
new Date()
의 내부에 인자를 넣는 것으로 프로그래머가 지정한 시간과 날짜를 가진 인스턴스를 생성할 수 있다.
Javascript에서는 Month를 표시할때 zero-based numbering을 사용함에 유의해야한다. 따라서 위의 예제에서의 4는, 5월을 의미한다.
1
2
3
const d2 = new Date("Fri May 19 2023 21:09:30 GMT+0900 (한국 표준시)");
console.log(d2);
//Fri May 19 2023 21:09:30 GMT+0900 (한국 표준시)
Date
클래스를 생성자 함수로 호출할 때 년,월,일,시분초를 따로 인수로 넣어줄 수도 있지만, 타임스탬프 문자열을 넣는 걸로도 특정 시간과 날짜를 지닌 인스턴스를 생성 가능하다.
이때 들어가는 문자열은 YYYY-MM-DD
등과 같이 브라우저가 지원하는 유효한 형식이어야 한다.
프로토타입 메소드
시분초일월년 반환, 지정
-
getFullYear(), setFullYear()
날짜 인스턴스의 년도를 반환하거나 지정한다.
1 2 3 4 5 6 7
const date = new Date(); console.log(date.getFullYear()); //2023 date.setFullYear(2022); console.log(date.getFullYear()); //2022 console.log(date); //Thu May 19 2022 21:36:37 GMT+0900 (한국 표준시)
-
getMonth(), setMonth()
날짜 인스턴스의 ‘달’을 반환하거나 지정한다.
zero-based numbering이 사용됨에 유의
1 2 3 4 5 6 7
const date = new Date(); console.log(date.getMonth()); //4 //5월 date.setMonth(0); console.log(date.getMonth()); //0 //1월 console.log(date); //Thu Jan 19 2023 21:40:01 GMT+0900 (한국 표준시)
-
getMonth(), setMonth()
날짜 인스턴스의 ‘일’를 반환하거나 지정한다.
1 2 3 4 5 6 7
const date = new Date(); console.log(date.getDate()); //19 date.setDate(11); console.log(date.getDate()); //11 console.log(date); //Thu May 11 2023 21:42:06 GMT+0900 (한국 표준시)
- getHours(), setHours()
- getMinutes(), setMinutes()
- getSeconds(), setSeconds()
getDay()
날짜 인스턴스의 요일을 반환한다.
- 월~일까지의 요일을 0~6으로 반환한다.
set 메소드는 존재하지 않는다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const date = new Date();
const day = date.getDay();
console.log(day); //5
console.log(getDatKo(day)); //토
function getDatKo(day) {
switch (day) {
case 0:
return "월";
case 1:
return "화";
case 2:
return "수";
case 3:
return "목";
case 4:
return "금";
case 5:
return "토";
case 6:
return "일";
}
}
getTime(), setTime()
1970-01-01 00:00:00 (유닉스타임)부터 경과한 날짜 인스턴스의 밀리초를 반환하거나 지정한다.
1
2
3
4
5
6
7
8
const date = new Date();
console.log(date.getTime()); //1684500722976
console.log(date); //Fri May 19 2023 21:52:02 GMT+0900 (한국 표준시)
date.setTime(1700000000000);
console.log(date.getTime()); //1700000000000
console.log(date); //Wed Nov 15 2023 07:13:20 GMT+0900 (한국 표준시)
getTime으로 반환된 밀리초 값이 더 클수록 더 미래의 시간이다.
아래의 예제는 getTime을 사용해 어떤 날짜 인스턴스가 인수로 들어온 날짜 인스턴스보다 더 미래의 시간인지 여부를 판단하는 프로토타입 메소드를 만드는 예시이다.
1
2
3
4
5
6
7
8
9
10
11
Date.prototype.isAfter = function (date) {
const a = this.getTime();
const b = date.getTime();
return a > b;
};
const d1 = new Date("2022 21:52:25 GMT+0900 (한국 표준시)");
const d2 = new Date("2023 21:52:25 GMT+0900 (한국 표준시)");
console.log(d1.isAfter(d2)); //false
console.log(d2.isAfter(d1)); //true
Date.now()
메소드가 호출될 때 1970-01-01 00:00:00 (유닉스타임)으로부터 경과한 밀리초를 반환
1
2
3
4
5
6
7
8
const time = new Date().getTime();
console.log(Date.now()); //1684501572151
console.log(time); //1684501572151
setTimeout(() => {
console.log(Date.now()); **//1684501573163**
console.log(time); //1684501572151
}, 1000);
위 코드에서 1000ms 이후 다시 Date.now()
반환값과 time
인스턴스 값을 출력했을 때, Date.now()
의 값이 time
의 값보다 대략 1000ms정도 큰 것을 확인 할 수 있다.
Date.now()
: 현재 시간의 밀리초 타임스탬프를 반환Date.getTime()
: 특정Date
객체의 시간을 밀리초로 반환