본문 바로가기
Programming/자바스크립트

[자바스크립트] Date 객체 생성

by 코딩하는 랄로 2023. 10. 27.
728x90

Date

자바스크립트에서는 Date객체를 사용하여 시간과 날짜에 관한 정보를 손쉽게 얻고 다룰 수있다. Date 객체는 연, 월, 일, 시, 분, 초에 대한 정보를 제공하고 밀리초의 정도도 제공한다.

 

자바스크립트에서 날짜와 시간을 나타내기 위한 값의 범위는 아래와 같다.

범위
Year 1900(00) ~ 
Month 1월(0) ~ 12월(11)
Day 1일(1) ~ 31일(31)
Hours 0시(0) ~ 23시(23)
Minutes 0분(0) ~ 59분(59)
Seconds 0초(0) ~ 59초(59)

 

이 때, 주의해야 할 점이 위의 표에서도 나와있지만 자바스크립트 Date 객체의 1월이 0으로 표현되고, 12월이 11로 표현된다는 것이다.

 

UTC / KST

프로그래밍 언어에서 Date 객체를 다루다보면 많이 접하게 되는 단어이다. UTC란 협정 세계시(Coordinated Universal Time)로써, GMT(그치니치 평균시 : Greenwich Mean Time)이라고도 불리기도 한다. (기술적인 표기에서는 UTC를 사용)

 

KST는 Korea Standart Time으로 UTC/GMT에 9시간을 더한 시간이다. 즉 UTC로 오후 12시이면 KST는 오후 9시인것이다.

 

 

 

Date 객체 생성

Date는 생성자 함수이기 때문에 new 키워드를 통해 호출하게 되면 날짜와 시간을 가지는 인스턴스를 생성한다. 생성자의 인수에 따라, 객체 생성 시 가지고 있는 날짜와 시간 정보는 달라진다.

 

 

new Date() : 기본생성자

인수를 전달하지 않는 기본 생성자를 호출하면, 현재 날짜와 시간을 가지는 인스턴스를 반환한다.

// new Date()
// 기본 생성자
// 현재 시간 날짜 정보를 가지는 인스턴스 반환
const date = new Date(); 
console.log(date.toString()); // Fri Oct 27 2023 22:44:35 GMT+0900 (한국표준시)

 

이 때 Date 객체의 toString 메소드를 사용하여야 해당 시간대 ( KST : + 09:00 ) 로 변환하여 출력할 수 있다.

// toString 없이 출력 시 => UTC 기준으로 출력됨
const date = new Date();
console.log(date) //2023-10-27T14:31:49.046Z

 

 

new Date(milliseconds)

인수로 숫자 타입의 밀리초를 전달하면 1970년 1월 1일 00:00(UTC)을 기준으로 인수로 전달된 밀리초만큼 경과한 날짜와 시간을 가지는 인스턴스를 반환한다.

// new Date(milliseconds)
// 1970.1.1 00:00 (UTC) + milliseconds
const date = new Date(0); 

// 한국표준시 = UTC + 09:00
console.log(date.toString()); // Thu Jan 01 1970 09:00:00 GMT+0900 (한국 표준시)

// 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.toString()); // Fri Jan 02 1970 09:00:00 GMT+0900 (한국 표준시)

 

 

new Date(dateString)

인수로 날짜와 시간을 나타내는 문자열을 전달하면 해당 날짜와 시간 정보를 가진느 인스턴스를 반환한다. 이 때에 인수에 사용되는 문자열은 Date.parse 메소드에 의해 해석이 가능한 형식이어야 한다.

// new Date(dateString)
// dateString => Date.parse => instance 생성
let date = new Date('Aug 3, 2023 21:35:28');
console.log(date.toString()); // Thu Aug 03 2023 21:35:28 GMT+0900 (한국 표준시)

date = new Date('2023/8/3');
console.log(date.toString()); // Thu Aug 03 2023 00:00:00 GMT+0900 (한국 표준시)

 

 

new Date(year, month, [day, hour, ..., second, millisecond])

인수로 년도, 월, 일 등을 각자 넘겨 주게 되면 해당하는 숫자에 맞는 날짜와 시간을 가지는 인스턴스를 반환한다. 이 때 년도와 월은 무조건 인수로 넘겨주어야 한다. 년도, 월을 지정해주지 않으면 1970.1.1 00:00(UTC)를 가지는 인스턴스를 반환한다. 나머지 정보는 지정하지 않을 시 기본값으로 초기화 된다.

// new Date(year, month,[ day, hour, minute, second, millisecond])
// year, month는 반드시 지정
// 그 외는 지정하지 않을 시 기본값
// day : 1
// hour, miute, second, millisecond : 0

// 월을 나타내는 4는 5월을 의미
// 2019/5/1/00:00:00:00
let date = new Date(2019, 4);
console.log(date.toString()); // Wed May 01 2019 00:00:00 GMT+0900 (한국 표준시)

// 2019/5/16/17:24:30:00
date = new Date(2019, 4, 16, 17, 24, 30, 0);
console.log(date.toString()); // Thu May 16 2019 17:24:30 GMT+0900 (한국 표준시)


//년 or 월 지정하지 않으면?
date = new Date(2019);
console.log(date.toString()); // // Thu Jan 01 1970 00:00:00 GMT

 

 

Date() : new 키워드 없이 호출

Date 생성자를 new 키워드 없이 호출하면 현재 날짜 정보를 문자열로 반환한다.

// new 없이 Date() 호출
let date = Date();
console.log(typeof date); // string 
console.log(date); // Fri Oct 27 2023 23:20:03 GMT+0900 (한국 표준시)

 

 

 

 

 

 

728x90