출처 - 모던 자바스크립트 Deep Dive (이웅모 지음)
1. Date.now()
1970년 1월 1일 00:00:00(UTC)을 기점으로 현재 시간까지 경과한 밀리초를 숫자로 반환한다.
Date.now(); // 1654695167189
2. Date.parse()
1970년 1월 1일 00:00:00(UTC)부터 인수로 전달된 시간까지 경과한 밀리초를 숫자로 반환한다.
Date.parse('Jan 2, 1970 00:00:00 UTC'); // 86400000
Date.parse('Jan 2, 1970 09:00:00'); // 86400000
Date.parse('1970/01/02/09:00:00'); // 86400000
3. 연, 월, 일, 요일 관련
(1) Year
getFullYear() : Date 객체의 연도를 나타내는 정수를 반환한다
new Date('2020/12/24').getFullYear(); // 2020
setFullYear() : Date 객체에 연도를 나타내는 정수를 설정한다. 옵션으로 월, 일도 설정할 수 있다
const today = new Date();
today.setFullYear(2000); // 960472181275
today.getFullYear(); // 2000
today.setFullYear(2010, 0, 1); // 1262353781275
today.getFullYear(); // 2010
(2) Month
getMonth() : 월을 나타내는 0~11의 정수를 반환한다
setMonth() : Date 객체에 월을 나타내는 0~11의 정수를 설정한다. 옵션으로 일도 설정할 수 있다
(3) Date
getDate() : Date 객체의 날짜(1~31)를 나타내는 정수를 반환한다.
setDate() : Date 객체에 날짜(1~31)를 나타내는 정수를 설정한다
(4) Day
getDay() : Date 객체의 요일(0~6)을 나타내는 정수를 반환한다
일요일이 0, 토요일이 6이다
setDay()는 없음
new Date('2022/06/07').getDay() // 2 (화요일)
4. 시, 분, 초, 밀리초 관련
(1) Hours
getHours() : Date 객체의 시간(0~23)을 나타내는 정수를 반환한다
setHours() : Date 객체에 시간(0~23)을 나타내는 정수를 설정한다.
옵션으로 분, 초, 밀리초를 설정할 수 있다
(2) Minutes
getMinutes() : Date 객체의 분(0~59)을 나타내는 정수를 반환한다
setMinutes() : Date 객체에 분(0~59)을 나타내는 정수를 설정한다
옵션으로 초, 밀리초를 설정할 수 있다
(3) Seconds
getSeconds() : Date 객체의 초(0~59)를 나타내는 정수를 반환한다
setSeconds() : Date 객체에 초(0~59)를 나타내는 정수를 설정한다
옵션으로 밀리초를 설정할 수 있다
(4) Milliseconds
getMilliseconds() : Date 객체의 밀리초(0~999)를 나타내는 정수를 반환한다
setMilliseconds() : Date 객체의 밀리초(0~999)를 나타내는 정수를 설정한다
5. getTime() & setTime()
getTime() : 1970 년 1 월 1 일 00:00:00 UTC와 주어진 날짜 사이의 경과시간(밀리초)을 반환한다.
getTime()을 이용해 아래처럼 코드의 수행시간을 측정할 수 있다
0~999까지 모든 수의 제곱근을 구하는 작업의 수행시간 측정하기
new Date('2022/06/06').getTime(); // 1654441200000
// 수행시간 측정하기
var end, start;
start = new Date();
for (let i = 0; i < 1000; i++) {
Math.sqrt(i);
}
end = new Date();
console.log('Operation took ' + (end.getTime() - start.getTime()) + ' milliseconds'); // 0초 또는 1초
setTime() : Date 객체에 1970 년 1 월 1 일 00:00:00 UTC와 주어진 날짜 사이의 경과시간(밀리초)을 설정한다.
6. 문자열 반환 메서드
const today = new Date('2022/6/07/12:30');
today.toString(); // 'Tue Jun 07 2022 12:30:00 GMT+0900 (한국 표준시)'
today.toDateString(); // 'Tue Jun 07 2022'
today.toTimeString(); // '12:30:00 GMT+0900 (한국 표준시)'
// toISOString()은 ISO 8601 형식으로 Date 객체의 날짜와 시간을 문자열로 반환한다
today.toISOString(); // '2022-06-07T03:30:00.000Z'
// 가장 많이 쓰는 방식으로 표현하기
today.toISOString().slice(0, 10); // 2022-06-07
// 숫자 8자리로 표현하기
today.toISOString().slice(0, 10).replace(/-/g, ''); // 20220607
// 인수가 전달한 로캘을 기준으로 날짜와 시간 문자열 반환
// 인수가 생략되면 브라우저가 동작중인 시스템의 로캘 적용
today.toLocaleString(); // '2022. 6. 7. 오후 12:30:00'
today.toLocaleString('ko-KR'); // '2022. 6. 7. 오후 12:30:00'
today.toLocaleString('en-US'); // '6/7/2022, 12:30:00 PM'
// 인수가 전달한 로캘을 기준으로 시간 문자열 반환
today.toLocaleTimeString(); // '오후 12:30:00'
7. 시계 예제
다음 예제는 현재 날짜와 시간을 초 단위로 출력한다
(function printNow() {
const today = new Date();
const dayNames = [
'(일요일)',
'(월요일)',
'(화요일)',
'(수요일)',
'(목요일)',
'(금요일)',
'(토요일)'
];
const day = dayNames[today.getDay()];
const year = today.getFullYear();
const month = today.getMonth() + 1; // month는 0부터 시작
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; // hour가 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);
// 1초마다 printNow 함수를 재귀 호출한다.
setTimeout(printNow, 1000);
}());