쑤쑤_CS 기록장
25. 날짜와 시간을 위한 Date 객체 본문
Date 객체
- 날짜와 시간(년, 월, 일, 시, 분, 초, 밀리초)을 위한 메소드를 제공하는 빌트인 객체이면서 생성자 함수이다.
- 생성자 함수로 생성한 Date 객체는 내부적으로 숫자값을 갖는다.
#1. Date Constructor
Date 객체는 생성자 함수이다.
Date 생성자 함수는 날짜와 시간을 가지는 인스턴스를 생성한다. 이는 기본적으로 현재 날짜와 시간을 나타내는 값을 가진다.
현재 날짜와 시간이 아닌 다른 날짜와 시간을 다루고 싶은 경우, Date 생성자 함수에 명시적으로 해당 날짜와 시간 정보를 인수로 지정한다.
Date 생성자 함수로 객체를 생성하는 방법(4)
- new Date()
인수를 전달하지 않으면 현재 날짜와 시간을 가지는 인스턴스를 반환한다.
const date = new Date();
console.log(date); // Thu May 16 2019 17:16:13 GMT+0900 (한국 표준시)
- new Date(milliseconds)
인수로 숫자 타입의 밀리초를 전달하며 그만큼 경과한 날짜와 시간을 가지는 인스턴스를 반환한다.
// KST(Korea Standard Time)는 GMT(그리니치 평균시: Greenwich Mean Time)에 9시간을 더한 시간이다.
let date = new Date(0);
console.log(date); // Thu Jan 01 1970 09:00:00 GMT+0900 (한국 표준시)
// 86400000ms는 1day를 의미한다.
// 1s = 1,000ms
// 1m = 60s * 1,000ms = 60,000ms
// 1h = 60m * 60,000ms = 3,600,000ms
// 1d = 24h * 3,600,000ms = 86,400,000ms
date = new Date(86400000);
console.log(date); // FFri Jan 02 1970 09:00:00 GMT+0900 (한국 표준시)
- new Date(dateString)
인수로 날짜와 시간을 나타내는 문자열을 전달하면 날짜와 시간을 가지는 인스턴스를 반환한다
let date = new Date('May 16, 2019 17:22:10');
console.log(date); // Thu May 16 2019 17:22:10 GMT+0900 (한국 표준시)
date = new Date('2019/05/16/17:22:10');
console.log(date); // Thu May 16 2019 17:22:10 GMT+0900 (한국 표준시)
- new Dat
인수로 년, 월, 일, 시, 분, 초, 밀리초를 의미하는 숫자를 전달하면 지정된 날짜와 시간을 가지는 인스턴스를 반환한다.
이때 년, 월은 반드시 지정하여야 한다. 지정하지 않은 옵션 정보는 0 또는 1으로 초기화된다.
- Date 생성자 함수를 new 연산자없이 호출
new 연산자없이 호출하면 인스턴스를 반환하지 않고 결과값을 문자열로 반환한다.
let date = Date();
console.log(typeof date, date); // string Thu May 16 2019 17:33:03 GMT+0900 (한국 표준시)
#2. Date 메소드
- Date.now
1970년 1월 1일 00:00:00(UTC)을 기점으로 현재 시간까지 경과한 밀리초를 숫자로 반환한다.
const now = Date.now();
console.log(now);
- Date.parse
인수로 전달된 지정 시간(new Date(dateString)까지의 밀리초를 숫자로 반환한다.
let d = Date.parse('Jan 2, 1970 00:00:00 UTC'); // UTC
console.log(d); // 86400000
d = Date.parse('Jan 2, 1970 09:00:00'); // KST
console.log(d); // 86400000
d = Date.parse('1970/01/02/09:00:00'); // KST
console.log(d); // 86400000
- Date.UTC
인수로 전달된 지정 시간까지의 밀리초를 숫자로 반환한다.
Date.UTC 메소드는 new Date(year, month[, day, hour, minute, second, millisecond]) 와 같은 형식의 인수를 사용해야 한다.
메소드의 인수는 local time(KST)가 아닌 UTC로 인식된다.
- Date.prototype.getFullYear
년도를 나타내는 4자리 숫자를 반환한다.
const today = new Date();
const year = today.getFullYear();
console.log(today); // Thu May 16 2019 17:39:30 GMT+0900 (한국 표준시)
console.log(year); // 2019
- Date.prototype.setFullYear
년도를 나타내는 4자리 숫자를 설정한다. 년도 이외 월, 일도 설정할 수 있다.
dateObj.setFullYear(year[, month[, day]])
- Date.prototype.getMonth
월을 나타내는 0 ~ 11의 정수를 반환한다.
1월은 0, 12월은 11이다.
const today = new Date();
const month = today.getMonth();
console.log(today); // Thu May 16 2019 17:44:03 GMT+0900 (한국 표준시)
console.log(month); // 4
- Date.prototype.setMonth
월을 나타내는 0 ~ 11의 정수를 설정한다.
1월은 0, 12월은 11이다. 월 이외 일도 설정할 수 있다.
dateObj.setMonth(month[, day])
const today = new Date();
// 월을 지정
today.setMonth(0); // 1월
let month = today.getMonth();
console.log(today); // Wed Jan 16 2019 17:45:20 GMT+0900 (한국 표준시)
console.log(month); // 0
// 월/일을 지정
today.setMonth(11, 1); // 12월 1일
month = today.getMonth();
console.log(today); // Sun Dec 01 2019 17:45:20 GMT+0900 (한국 표준시)
console.log(month); // 11
- Date.prototype.getDate
날짜(1 ~ 31)를 나타내는 정수를 반환한다.
const today = new Date();
const date = today.getDate();
console.log(today); // Thu May 16 2019 17:46:42 GMT+0900 (한국 표준시)
console.log(date); // 16
- Date.prototype.setDate
날짜(1 ~ 31)를 나타내는 정수를 설정한다.
const today = new Date();
// 날짜 지정
today.setDate(1);
const date = today.getDate();
console.log(today); // Wed May 01 2019 17:47:01 GMT+0900 (한국 표준시)
console.log(date); // 1
- Date.prototype.getDay
요일을 나타내는 정수를 반환한다.
- Date.prototype.getHours
시간(0~23) 을 나타내는 정수를 반환한다.
- Date.prototype.setHours
시간(0 ~ 23)를 나타내는 정수를 설정한다. 시간 이외 분, 초, 밀리초도 설정할 수 있다.
dateObj.setHours(hour[, minute[, second[, ms]]])
const today = new Date();
// 시간 지정
today.setHours(7);
let hours = today.getHours();
console.log(today); // Thu May 16 2019 07:49:06 GMT+0900 (한국 표준시)
console.log(hours); // 7
// 시간/분/초/밀리초 지정
today.setHours(0, 0, 0, 0); // 00:00:00:00
hours = today.getHours();
console.log(today); // Thu May 16 2019 00:00:00 GMT+0900 (한국 표준시)
console.log(hours); // 0
- Date.prototype.getMinutes
분(0 ~ 59)를 나타내는 정수를 반환한다.
- Date.prototype.setMinutes
분(0 ~ 59)를 나타내는 정수를 설정한다. 분 이외 초, 밀리초도 설정할 수 있다.
dateObj.setMinutes(minute[, second[, ms]])
const today = new Date();
// 분 지정
today.setMinutes(50);
let minutes = today.getMinutes();
console.log(today); // Thu May 16 2019 17:50:30 GMT+0900 (한국 표준시)
console.log(minutes); // 50
// 분/초/밀리초 지정
today.setMinutes(5, 10, 999); // HH:05:10:999
minutes = today.getMinutes();
console.log(today); // Thu May 16 2019 17:05:10 GMT+0900 (한국 표준시)
console.log(minutes); // 5
- Date.prototype.getSeconds
초(0 ~ 59)를 나타내는 정수를 반환한다.
- Date.prototype.setSeconds
초(0 ~ 59)를 나타내는 정수를 설정한다. 초 이외 밀리초도 설정할 수 있다.
dateObj.setSeconds(second[, ms])
const today = new Date();
// 초 지정
today.setSeconds(30);
let seconds = today.getSeconds();
console.log(today); // Thu May 16 2019 17:54:30 GMT+0900 (한국 표준시)
console.log(seconds); // 30
// 초/밀리초 지정
today.setSeconds(10, 0); // HH:MM:10:000
seconds = today.getSeconds();
console.log(today); // Thu May 16 2019 17:54:10 GMT+0900 (한국 표준시)
console.log(seconds); // 10
- Date.prototype.getMilliseconds
밀리초(0 ~ 999)를 나타내는 정수를 반환한다.
const today = new Date();
const ms = today.getMilliseconds();
console.log(today); // Thu May 16 2019 17:55:02 GMT+0900 (한국 표준시)
console.log(ms); // 905
- 밀리초(0 ~ 999)를 나타내는 정수를 반환한다.
밀리초(0 ~ 999)를 나타내는 정수를 설정한다.
- Date.prototype.getTime
1970년 1월 1일 00:00:00(UTC)를 기점으로 현재 시간까지 경과된 밀리초를 반환한다.
- Date.prototype.setTime
1970년 1월 1일 00:00:00(UTC)를 기점으로 현재 시간까지 경과된 밀리초를 설정한다.
- Date.prototype.getTimezoneOffset
UTC와 지정 로케일(Locale) 시간과의 차이를 분단위로 반환한다.
- Date.prototype.toDateString
사람이 읽을 수 있는 형식의 문자열로 날짜를 반환한다.
- Date.prototype.toTimeString
사람이 읽을 수 있는 형식의 문자열로 시간을 반환한다.
현재 날짜와 시간을 초 단위로 반복 출력하는 예제
(function printNow() {
const today = new Date();
const dayNames = ['(일요일)', '(월요일)', '(화요일)', '(수요일)', '(목요일)', '(금요일)', '(토요일)'];
// getDay: 해당 요일(0 ~ 6)를 나타내는 정수를 반환한다.
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();
const ampm = hour >= 12 ? 'PM' : 'AM';
// 12시간제로 변경
hour %= 12;
hour = hour || 12; // 0 => 12
// 10미만인 분과 초를 2자리로 변경
minute = minute < 10 ? '0' + minute : minute;
second = second < 10 ? '0' + second : second;
const now = `${year}년 ${month}월 ${date}일 ${day} ${hour}:${minute}:${second} ${ampm}`;
console.log(now);
setTimeout(printNow, 1000);
}());
'IT 지식 기록 > JavaScript 정리' 카테고리의 다른 글
27. String 레퍼 객체 (0) | 2020.12.25 |
---|---|
26. 정규표현식 (0) | 2020.12.25 |
24. 수학 상수와 함수를 위한 Math 객체 (0) | 2020.12.24 |
23. Number 래퍼 객체 (0) | 2020.12.24 |
22. 전역 객체 (0) | 2020.12.24 |