[Javascript] Date

nxnaxx·2021년 11월 22일
0

javascript

목록 보기
14/14
post-thumbnail

Date

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

Date 생성자 함수로 생성한 Date 객체는 1970년 1월 1일 00:00:00(UTC)을 기점으로 하여 기본적으로 현재 날짜와 시간을 나타내는 정수값을 가진다.

객체를 생성하는 방법은 다음과 같이 4가지가 있다.

new Date()

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

// new Date()
new Date(); // Mon Nov 22 2021 16:47:54 GMT+0900 (대한민국 표준시)

new 연산자 없이 호출하면 객체를 반환하지 않고 날짜와 시간 정보가 담긴 문자열을 반환한다.

// new Date()
Date(); // 'Mon Nov 22 2021 16:47:54 GMT+0900 (대한민국 표준시)'

new Date(milliseconds)

 Date 생성자 함수에 숫자 타입의 밀리초를 인수로 전달하면 전달된 밀리초만큼 경과한 날짜와 시간을 나타내는 Date 객체를 반환한다.

예를 들어 1day는 밀리초로 환산하면 24h 60h 60s * 1000ms = 86,400,000ms이다.

// new Date(milliseconds)
new Date(0); // Thu Jan 01 1970 09:00:00 GMT+0900 (대한민국 표준시)

new Date(86400000); // Fri Jan 02 1970 09:00:00 GMT+0900 (대한민국 표준시)

new Date(dataString)

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

// new Date(dateString)
new Date('February 15, 2010 04:00:00'); // Mon Feb 15 2010 04:00:00 GMT+0900 (대한민국 표준시)

new Date('1999/01/26 04:00:00'); // Mon Feb 15 2010 04:00:00 GMT+0900 (대한민국 표준시)

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

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

인수내용
year0 ~ 99. 1900년부터 1999년
month0 ~ 11 (* 0부터 1월 시작)
day1 ~ 31
hour0 ~ 23
minute0 ~ 59
second0 ~ 59
millisecond0 ~ 999
// new Data(year, month...)
new Date(2021, 11, 25, 10, 00, 00, 00, 0); // Sat Dec 25 2021 10:00:00 GMT+0900 (대한민국 표준시)

Date method

Date.now

 Date.now는 1970년 1월 1일 00:00:00(UTC)을 기점으로 현재 시간까지 경과한 밀리초를 숫자로 반환한다.

// Date.now
Date.now(); // 1637582636286

Date.parse

 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

Date.UTC

 Date.UTC는 1970년 1월 1일 00:00:00(UTC)을 기점으로 인수로 전달된 지정 시간까지의 밀리초를 숫자로 반환한다. new Date(year, month, day, hour, minute, second, millisecond)와 같은 형식의 인수를 사용해야 하고 로컬 타임이 아닌 UTC로 인식된다.

// Date.UTC
Date.UTC(2021, 10, 22); // 1637539200000

Date.prototype.getFullYear / Date.prototype.setFullYear

 Date.prototype.getFullYear은 Date 객체의 연도를 나타내는 정수를 반환한다.
Date.prototype.setFullYear은 Date 객체에 연도를 나타내는 정수를 설정한다. 연도 이외에 월, 일도 설정할 수 있다.

// Date.prototype.getFullYear
new Date('2021/11/22').getFullYear(); // 2021

// Date.prototype.setFullYear
const today = new Date();

today.setFullYear(1999, 11, 5);
today.getFullYear(); // 1999

Date.prototype.getMonth / Date.prototype.setMonth

 Date.prototype.getMonth는 Date 객체의 월을 나타내는 0에서 11 사이의 정수를 반환한다. 1월부터 0이다.
Date.prototype.setMonth는 Date 객체에 월을 나타내는 0에서 11까지의 정수를 설정한다. 월 이외에 일도 설정 가능하다.

// Date.prototype.getMonth
new Date('2010/02/15').getMonth(); // 1

// Date.prototype.setMonth
const today = new Date();

today.setMonth(4);
today.getMonth(); // 5

Date.prototype.getDate / Date.prototype.setDate

 Date.prototype.getDate는 Date 객체의 날짜를 나타내는 1에서 31까지의 정수를 반환한다.
Date.prototype.setDate는 Date 객체에 날짜를 나타내는 정수를 설정한다.

// Date.prototype.getDate
new Date('2010/02/15').getDate(); // 15

// Date.prototype.setDate
const today = new Date();

today.setDate(10);
today.getDate(); // 10

Date.prototype.getDay

 Date.prototype.getDay는 Date 객체의 요일을 나타내는 정수를 나타낸다. 0에서 6까지의 정수로 일요일부터 0이다.

// Date.prototype.getDay
new Date('2010/02/15').getDay(); // 1 (=월요일)

Date.prototype.getHours / Date.prototype.setHours

 Date.prototype.getHours는 Date 객체의 시간을 나타내는 정수를 반환한다.
Date.prototype.setHours는 Date 객체에 시간을 나타내는 정수를 설정한다. 시간 이외에 분, 초, 밀리초도 설정할 수 있다.

// Date.prototype.getHours
new Date('2010/02/15/10:00').getHours(); // 10

// Date.prototype.setHours
const today = new Date();

today.setHours(21);
today.getHours(); // 21

Date.prototype.getMinutes / Date.prototype.setMinutes

 Date.prototype.getMinutes는 Date 객체의 분을 나타내는 정수를 반환한다.
Date.prototype.setMinutes는 Date 객체에 분을 나타내는 정수를 설정한다. 분 이외에 초, 밀리초도 설정할 수 있다.

// Date.prototype.getMinutes
new Date('2010/02/15/10:35').getMinutes(); // 35

// Date.prototype.setMinutes
const today = new Date();

today.setMinutes(25);
today.getMinutes(); // 25

Date.prototype.getSeconds / Date.prototype.setSeconds

 Date.prototype.getSeconds는 Date 객체의 초를 나타내는 정수를 반환한다.
Date.prototype.setSeconds는 Date 객체에 초를 나타내는 정수를 설정한다. 초 이외에 밀리초도 설정할 수 있다.

// Date.prototype.getSeconds
new Date('2010/02/15/10:35:18').getSeconds(); // 18

// Date.prototype.setSeconds
const today = new Date();

today.setSeconds(58);
today.getSeconds(); // 58

Date.prototype.getMilliseconds / Date.prototype.setMilliseconds

 Date.prototype.getMilliseconds는 Date 객체의 밀리초를 나타내는 정수를 반환한다.
Date.prototype.setMilliseconds는 Date 객체에 밀리초를 나타내는 정수를 설정한다. 초 이외에 밀리초도 설정할 수 있다.

// Date.prototype.getMilliseconds
new Date('2010/02/15/10:35:18:660').getMilliseconds(); // 660

// Date.prototype.setMilliseconds
const today = new Date();

today.setMilliseconds(178);
today.getMilliseconds(); // 178

Date.prototype.getTime / Date.prototype.setTime

 Date.prototype.getTime은 1970년 1월 1일 00:00:00(UTC)을 기점으로 Date 객체 시간까지 경과된 밀리초를 반환한다.
Date.prototype.setTime은 Date 객체에 1970년 1월 1일 00:00:00(UTC)을 기점으로 경과된 밀리초를 설정한다.

// Date.prototype.getTime
new Date('2010/02/15/10:35').getTime(); // 1266197700000

// Date.prototype.setTime
const today = new Date();

today.setTime(86400000);
console.log(today); // Fri Jan 02 1970 09:00:00 GMT+0900 (대한민국 표준시)

Date.prototype.getTimezoneOffset

 Date.prototype.getTimezoneOffset은 UTC와 Date 객체에 지정된 locale 시간과의 차이를 분 단위로 반환한다. KST는 UTC에 9시간을 더한 시간이므로 UTC = KST - 9h다.

// Date.prototype.getTimezoneOffset
const today = new Date();

today.getTimezoneOffset() / 60; // -9

Date.prototype.toDateString / Date.prototype.toTimeString / Date.prototype.toISOString / Date.prototype.toLocaleString / Date.prototype.toLocaleTimeString

 Date.prototype.toDateString은 사람이 읽을 수 있는 문자열 형식으로 Date 객체의 날짜를 반환한다.
Date.prototype.toTimeString은 사람이 읽을 수 있는 형식으로 Date 객체의 시간을 표현한 문자열을 반환한다.

// Date.prototype.toDateString
const today = new Date('2021/11/22/18:30');

today.toString(); // Mon Nov 22 2021 18:30:00 GMT+0900 (대한민국 표준시)
today.toDateString(); // Mon Nov 22 2021

// Date.prototype.toTimeString
today.toTimeString(); // 18:30:00 GMT+0900 (대한민국 표준시)

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

// Date.prototype.toISOString
const today = new Date('2021/11/22/18:30');

today.toISOString(); // 2021-11-22T09:30:00.000Z

today.toISOString().slice(0, 10); // 2021-11-22
today.toISOString().slice(0, 10).replace(/-/g, ''); // 20211122

 Date.prototype.toLocaleString은 인수로 전달한 locale을 기준으로 Date 객체의 날짜와 시간을 표현한 문자열을 반환한다. 인수를 생략한 경우에는 브라우저가 동작 중인 시스템의 locale을 적용한다.
Date.prototype.toLocaleTimeString은 toLocaleString과 비슷하지만 시간을 표현한 문자열만 반환한다.

// Date.prototype.toLocaleString
const today = new Date('2021/11/22/18:30');

today.toLocaleString('ko-KR'); // 2021. 11. 22. 오후 18:30:00
today.toLocaleString('en-US'); // 11/22/2021, 18:30:00 PM
today.toLocaleString('ja-JP'); // 2021/11/22 18:30:00

// Date.prototype.toLocaleTimeString

today.toLocaleTimeString('ko-KR'); // 오후 18:30:00
today.toLocaleTimeString('en-US'); // 18:30:00 PM
today.toLocaleTimeString('ja-JP'); // 18:30:00

0개의 댓글