WHAT I LEARNED/JavsScript

모던 자바스크립트 30. Date

보니bonnie 2024. 7. 2. 22:16
728x90

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

'현재 날짜와 시간'이라 함은 자바스크립트 코드가 실행된 시스템의 시계에 의해 결정된다.

따라서 한국은 KST(한국표준시, UTC+9시간)으로 표시된다.

 

1. Date 생성자 함수

Date는 생성자 함수이다.

생성자 함수 Date로 생성한 Date 객체는 내부적으로 날짜와 시간을 나타내는 정수값을 갖는다.

이 정수값은 1970년 1월 1일 00:00:00(UTC)을 기점으로 Date 객체가 나타내는 날짜와 시간까지의 밀리초이며, 이를 타임스탬프라고 한다. 즉, 생성자 함수 Date로 생성한 Date 객체는 내부적으로 타임스탬프를 반환한다고 할 수 있다.

 

1) new Date()

Date 생성자 함수를 인수 없이 new 연산자와 함께 호출하면 현재 날짜와 시간을 가지는 Date 객체를 반환한다.

반환된 Date 객체는 내부적으로는 정수값을 갖지만, 콘솔에 출력하면 기본적으로 날짜와 시간 정보를 출력한다.

Date 객체를 반환한 모습(위)과 날짜와 시간 정보를 나타내는 문자열을 반환한 모습(아래)

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

 

2) new Date(milliseconds)

Date 생성자 함수에 숫자 타입의 밀리초를 인수로 전달하면

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

8640000밀리초 = 24(h) * 60(m) * 60(s) * 1000(ms) = 1일을 밀리초로 변환

 

3) new Date(dateString)

Date 생성자 함수에 날짜와 시간을 나타내는 문자열을 인수로 전달하면 지정된 날짜와 시간을 나타내는 Date 객체를 반환한다.

 

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

Date 생성자 함수에 연, 월, 일, 시, 분, 초, 밀리초를 의미하는 숫자를 인수로 전달하면 지정된 날짜와 시간을 나타내는 Date 객체를 반환한다. 연(year)과 월(month)은 필수로 정해야하며, 지정하지 않은 옵션은 0 또는 1로 초기화 된다.

이 때, 월은 0(1월)부터 시작하여 11(12월)까지 존재한다. 

month를 나타내는 두 번째 인수자리에 6을 넣어 7월을 나타냄

 


2. Date 객체 메소드

1. 정적 메소드

1) Date.now

현재 시간까지의 타임스탬프를 숫자로 반환한다.

 

 

2) Date.parse

인수로 전달된 지정 시간까지의 타임스탬프를 숫자로 반환한다

YYYY/MM/DD형식, MM/DD/YYYY형식, YYYY-MM-DD형식, ISO 8601형식 등을 인수로 인식한다.

이 때, Date.parse 메소드의 인수는 new Date(dateString)의 인수와 같은 형식이다.

 

 

3) Date.UTC

인수로 전달된 지정 시간까지의 타임스탬프를 숫자로 반환한다.

이 때 Date.UTC 메소드의 인수는 new Date(year, month[, day, hour, minute, second, millisecond])의 인수와 같은 형식이다.

Date.UTC 메소드의 인수는 로컬 타임이 아닌 UTC로 인식된다.

 

 

2. 인스턴스 메소드

1) Getter 메소드

(1) Date.prototype.getFullYear

연도(네자릿수)를 반환한다. 

2024/07/02

getYear()라는 메소드로 연도를 얻고는 했지만 이는 두 자릿수 연도를 반환하는 경우도 있으므로 정확한 연도를 반환받기 위해서는 getFullYear()를 사용해야 한다. 

 

(2) Date.prototype.getMonth

2024/07/02

Date 객체의 월을 나타내는 0(1월)부터 11(12월)까지의 정수 중 하나를 반환한다.

 

(3) Date.prototype.getDate

Date 객체의 날짜를 나타내는 0~31까지의 정수를 반환한다.

2024/07/02

 

(4) Date.prototype.getDay

2024/07/02/화요일

Date 객체의 요일을 나타내는 0(일요일)부터 6(토요일)까지의 정수 중 하나를 반환한다.

 

(5) Date.prototype.getHours

Date 객체의 시간을 나타내는 0~23의 정수를 반환한다.

 

(6) Date.prototype.getMinutes

Date 객체의 분을 나타내는 0~59의 정수를 반환한다.

 

(7) Date.prototype.getSeconds

Date 객체의 초를 나타내는 0~59의 정수를 반환한다.

 

(8) Date.prototype.getMilliseconds

Date 객체의 밀리초를 나타내는 0~999의 정수를 반환한다.

 

(9) Date.prototype.getTime

Date 객체의 시간까지의 타임스탬프를 반환한다.

KST 기준!

valueOf()라는 메소드를 사용해도 동일한 결과를 얻을 수 있다.

 

(10) Date.prototype.getTimezoneOffset

UTC와 KST는 -9시간 차이난다(-540분)

UTC와 Date 객체에 지정된 locale 시간과의 차이를 분 단위로 반환한다.

 

 

2) Setter 함수

(1) Date.prototype.setFullYear

Date 객체에 연도를 나타내는 정수를 설정한다.

 

연도 이외에 두 번째, 세 번째 인수에 월, 일도 설정할 수 있다.

 

(2) Date.prototype.setMonth

Date 객체에 월을 나타내는 0~11의 정수를 설정한다.

월 이외에 두 번째 인수로 일도 설정할 수 있다.

 

(3) Date.prototype.setDate

Date 객체에 날짜를 나타내는 0~31의 정수를 설정한다.

 

(4) Date.prototype.setHours

Date 객체에 시간을 나타내는 0~23의 정수를 설정한다.

시간 이외에 옵션으로 분, 초, 밀리초도 설정할 수 있다.

 

(5) Date.prototype.setMinutes

Date 객체에 분을 나타내는 0~59의 정수를 설정한다.

분 이외에 옵션으로 초, 밀리초도 설정할 수 있다.

 

(6) Date.prototype.setSeconds

Date 객체에 초를 나타내는 0~59의 정수를 설정한다.

초 이외에 옵션으로 밀리초도 설정할 수 있다.

 

(7) Date.prototype.setMilliseconds

Date 객체에 밀리초를 나타내는 0~999의 정수를 설정한다.

 

(8) Date.prototype.setTime

Date 객체에 1970년 1월 1일 00:00:00(UTC)을 기점으로 경과된 밀리초, 즉 타임스탬프를 설정한다.

 

 

3) 기타 메소드 (문자열 반환)

(1) Date.prototype.toDateString

사람이 읽을 수 있는 형식의 문자열로 Date 객체의 날짜를 반환한다.

 

(2) Date.prototype.toTimeString

사람이 읽을 수 있는 형식의 문자열로 Date 객체의 시간 반환한다.

 

(3) Date.prototype.toISOString

ISO 8601 형식으로 Date 객체의 날짜와 시간을 표현한 문자열을 반환한다.

 

ISO 8601?
날짜와 시간을 표현하는 국제 표준.
기본 형식은 YYYY-MM-DD(날짜), hh:mm:ss(시간)이고
날짜와 시간을 결합한 YYYY-MM-DDThh:mm:ssZ 형태로 표현하기도 한다.

 

(4) Date.prototype.toLocaleString

인수로 전달한 로캘(locale)을 기준으로 Date 객체의 날짜와 시간을 표현한 문자열을 반환한다.

인수 생략하는 경우, 브라우저가 동작 중인 시스템의 로캘을 적용한다.

 

(5) Date.prototype.toLocaleDateString

인수로 전달한 로캘을 기준으로 Date 객체의 날짜를 표현한 문자열을 반환한다.

인수 생략하는 경우, 브라우저가 동작 중인 시스템의 로캘을 적용한다.

 

(6) Date.prototype.toLocaleTimeString

인수로 전달한 로캘을 기준으로 Date 객체의 시간을 표현한 문자열을 반환한다.

인수 생략하는 경우, 브라우저가 동작 중인 시스템의 로캘을 적용한다.

 

728x90