[JavaScript] 생성자 함수 Date

Minjae JO·2022년 7월 24일
0

생성자 함수(constructor)란, new 연산자와 함께 호출하여 객체(인스턴스)를 생성하는 함수를 말한다. 생성자 함수에 의해 생성된 객체를 인스턴스라고 한다.

new Object를 호출하면 빈 객체를 생성하여 반환하는데, 이후 프로퍼티 또는 메서드를 추가하여 객체를 완성하면 된다.

Date는 생성자 함수이다.

즉, new Date로 객체를 생성하면, 우리는 Date 객체가 가지고 있는 기본적인 정보들을 모두 가져다 사용할 수 있다.

인자 없이 new Date();를 생성하면, 정해진 형식에 따라 현재 날짜와 시간을 가지는 Date 객체를 반환한다.

new Date(); // -> Mon Jul 06 2020 01:03:18 GMT+0900 (대한민국 표준시)

new 없이 그냥 Date();를 호출하면, 객체를 반환하는게 아니라 현재 날짜와 시간 정보가 담긴 "문자열"만 반환한다.

Date(); // -> 'Mon Jul 06 2020 01:03:18 GMT+0900 (대한민국 표준시)'

따라서 new로 생성해야 Date 객체가 가진 여러 프로토타입 메서드를 사용하는 것이 가능하다.

new Date가 받는 인수로는,

  1. milliseconds
new Date(86400000); -> Fri Jan 02 1970 09:00:00 GMT+0900 (대한민국 표준시)
  • 1970년 1월 1일 00:00:00(UTC)를 기점으로, 인수로 전달된 밀리초만큼 경과한 날짜와 시간을 나타내는 Date 객체를 반환한다.
  1. dateString
new Date('May 26, 2020 10:00:00');
new Date('2020/03/26/10:00:00');
  • 단, 모든 stirng을 인수로 받을 수는 없고, 위와 같이 Date.parse에 의해 해석 가능한 형식만 받을 수 있다.
  1. year, month[, day, hour, minute, second, millisencond])
  • 각각에 해당하는 인수를 숫자로 전달하면 해당 날짜를 반환한다.
    이 때 연, 월을 반드시 지정하여야 하며, 지정하지 않으면 정보가 0또는 1로 초기화되어 1970년 1월 1일 00:00:00(UTC)를 나타내는 객체를 반환한다.
new Date(2020, 2);
new Date(2020, 2, 26, 10, 00, 00, 0);
  • 단, 위의 결과는 모두 '3월'을 반환한다. month는 0~11로 세므로 0=1월이다. 이를 주의하여야 한다.

Date 객체가 가지고 있는 prototype 메서드를 호출하기 위해서는, 반드시 Date 생성자 함수로 Date 객체의 인스턴스 만들기(new Object로 생성)가 선행되어야 한다.

Date 객체가 가지고 있는 유용한 메서드가 많이 있으니, 사용법을 잘 익혀둘 것.


더 알아보기

const nowDate = Date.now();
const nowTime = new Date().getTime();

위의 결과는 완전히 동일하다. 기준인 1970년 1월 1일 00:00:00(UTC)부터 현재까지 몇 밀리초가 지났는지를 반환한다.

단, 날짜를 인수로 받을 경우 같은 결과를 받으려면, Date.parse 메서드를 사용해야 한다.

const otherDate = Date.parse('2020/3');
const otherTime = new Date(2020, 2).getTime();

기준시로부터 인수로 받은 날짜까지 몇 밀리초가 지났는지 결과값을 얻을 수 있으며, 이 때 Date.parse의 인수는 반드시 String 형식이어야 한다.

0개의 댓글