30장. Date

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date

날짜와 시간을 위한 메서드를 제공하는 표준 빌트인 객체이자 생성자 함수

<aside>

(참고) UTC와 KST

</aside>

30.1 Date 생성자 함수

Date 생성자 함수로 생성한 Date 객체는 내부적으로 날짜와 시간을 나타내는 정수값을 갖는다. 이 값은 1970년 1월 1일 00:00:00(UTC)을 기점으로 Date 객체가 나타내는 날짜와 시간까지의 밀리초입니다.

30.1.1 new Date()

생성자 함수를 인수 없이 new 연산자와 함께 호출하면 현재 날짜와 시간을 갖는 Date 객체를 반환한다. Date 객체는 내부적으로 날짜와 시간을 나타내는 정수값을 갖지만 콘솔에 출력하면 기본적으로 날짜와 시간 정보를 출력한다.

console.log(new Date()); // Tue Aug 26 2025 21:36:31 GMT+0900 (한국 표준시)

<aside>

(참고) 브라우저 vs. Node.js

브라우저는 KST 기준, Node.js는 UTC 기준으로 출력된다.

브라우저

브라우저

Node.js

Node.js

</aside>

Date 생성자 함수를 new 연산자 없이 호출하면 Date 객체를 반환하는 것이 아닌, 날짜와 시간 정보를 나타내는 문자열을 반환한다.

console.log(Date()); // Tue Aug 26 2025 21:36:31 GMT+0900 (한국 표준시)

30.1.2 new Date(milliseconds)

Date 생성자 함수에 숫자 타입의 밀리초를 인수로 전달하면 1970년 1월 1일 00:00:00(UTC)을 기점으로 인수로 전달된 밀리초만큼 경과한 날짜와 시간을 나타내는 Date 객체를 반환하다.

console.log(new Date(0)); // Thu Jan 01 1970 09:00:00 GMT+0900 (한국 표준시)
console.log(new Date(1 * 24 * 60 * 60 * 1000)); // Fri Jan 02 1970 09:00:00 GMT+0900 (한국 표준시)

// 음수 샤용 가능
console.log(new Date(-1 * 24 * 60 * 60 * 1000)); // Wed Dec 31 1969 09:00:00 GMT+0900 (한국 표준시)

<aside>

(참고) new 연산자 없이 호출 + 인수 전달

인수 값과 상관없이 항상 현재 날짜와 시간 정보를 나타내는 문자열을 반환한다.

// Date를 new 없이 호출하면 반환되는 값은 현재 날짜와 시간의 문자열이다.
// 인수를 줘도 무시된다. (인자가 있어도 그냥 현재 시간 문자열만 리턴한다.)
console.log(Date()); // Wed Aug 27 2025 08:50:45 GMT+0900 (한국 표준시)
console.log(Date(86400000)); // Wed Aug 27 2025 08:50:45 GMT+0900 (한국 표준시)ㄹ

</aside>

30.1.3 new Date(dateString)