seunghyun Note

30장 (Date) 본문

스터디/모던자바스크립트 deep dive

30장 (Date)

승숭슝현 2024. 1. 9. 16:25
728x90
반응형

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

1. Date 생성자 함수

Date는 생성자 함수이다. Date 생성자 함수로 생성한 Date 객체는 내부적으로 날짜와 시간을 나타내는 정수값을 갖는다. 1970년 뭐시기 언제부터 시작했다는데 별로 안중요해보인다.

new Date ()

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

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

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

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

new Date(milliseconds)

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

// 한국 표준시 KST는 협정 세계시 UTC에 9시간을 더한 시간이다.
new Date(0); // -> Thu Jan 01 1970 09:00:00 GMT+0900 (대한민국 표준시)

/*
86400000ms는 1day를 의미한다.
1s = 1,000ms
1m = 60s * 1,000ms = 60,000ms
1h = 60m * 60,000ms = 3,600,000ms
1d = 24h * 3,600,000ms = 86,400,000ms
*/
new Date(86400000); // -> Fri Jan 02 1970 09:00:00 GMT+0900 (대한민국 표준시)

new Date(dateString)

Date 생성자 함수에 날짜와 시간을 나타내는 문자열을 인수로 전달하면 지정된 날짜와 시간을 나타내는 Date 객체를 반환한다. 이때 인수로 전달한 문자열은 Date.parse 메서드에 의해 해석 가능한 형식이어야 한다.

new Date('May 26, 2020 10:00:00');
// -> Tue May 26 2020 10:00:00 GMT+0900 (대한민국 표준시)

new Date('2020/03/26/10:00:00');
// -> Thu Mar 26 2020 10:00:00 GMT+0900 (대한민국 표준시)

New Date(뭐시기)

year : 1900년 이후의 정수 ... 그냥 잘
month : 011 당연한 ㅅ 0 = 1월이다
day : 1
31
hour : 023
minute,second : 0
59
millisecond : 0~999

// 월을 나타내는 2는 3월을 의미한다. 2020/3/1/00:00:00:00
new Date(2020, 2);
// -> Sun Mar 01 2020 00:00:00 GMT+0900 (대한민국 표준시)

// 월을 나타내는 2는 3월을 의미한다. 2020/3/26/10:00:00:00
new Date(2020, 2, 26, 10, 00, 00, 0);
// -> Thu Mar 26 2020 10:00:00 GMT+0900 (대한민국 표준시)

// 다음처럼 표현하면 가독성이 훨씬 좋다.
new Date('2020/3/26/10:00:00:00');
// -> Thu Mar 26 2020 10:00:00 GMT+0900 (대한민국 표준시)

2. Date 메서드

Date.now

  1. 1.1 00시를 기점으로 지금까지의 밀리초를 숫자로 반환해준단다. 개쩐다
const now = Date.now(); // -> 1593971...

Date.parse

시작 주고 현재까지의 시간을 밀리초로 바꿔준다.


// UTC
Date.parse('Jan 2, 1970 00:00:00 UTC'); // -> 8640000

// KST
Date.parse('Jan 2, 1970 09:00:00'); // -> 8640000

Date.UTC

1970년 1월 1일 00:00:00(UTC)을 기점으로 인수로 전달된 지정시간까지의 밀리초를 숫자로 반환한다.

Date.prototype.getFullYear

객체의 연도를 나타내느 정수로 반환

new Date('2020/07/24').getFullYear(); // -> 2020

Date.prototype.setFullYear

Date객체에 연도를 나타내는 정수를 설정, 연도 이외에 월, 일도 설정할 수 있다

const today = new Date();

// 년도 지정
today.setFullYear(2000);
today.getFullYear(); // -> 2000

// 년도/월/일 지정
today.setFullYear(1900, 0, 1);
today.getFullYear(); // -> 1900

Date.prototype.getMonth ,setMonth ,getDate,setDate, getHours, setHours,getMinutes, setMinutes, getSeconds, setSeconds, getMilliseconds,setMilliseconds,getTime,setTime

같은 원리다.

Date.prototype.getTimezoneOffset

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

const today = new Date(); // today의 지정 locale은 KST다.

// UTC와 today의 지정 locale KST와의 차이는 -9시간이다.
today.getTimezoneOffset() / 60; // -9

Date.prototype.toDatestring, toTimeString, toISOString, toLocaleString, toLocalTimeString

다 같은 원리다.

//toDateString

const today = new Date('2020/7/24/12:30');

today.toString(); // -> Fri Jul 24 2020 12:30:00 GMT+0900
today.toDateString(); // -> Fri Jul 24 2020

//toTimeString

const today = new Date('2020/7/24/12:30');

today.toString(); // -> Fri Jul 24 2020 12:30:00 GMT+0900 (대한민국 표준시)
today.toTimeString(); // -> 12:30:00 GMT+0900

//toISOString
const today = new Date('2020/7/24/12:30');

today.toString(); // -> Fri Jul 24 2020 12:30:00 GMT+0900
today.toISOString(); // -> 2020-07-24T03:30:00.000Z

today.toISOString().slice(0, 10); // -> 2020-07-24
today.toISOString().slice(0, 10).replace(/-/g, '');; // -> 20200724

//toLocaleString

const today = new Date('2020/7/24/12:30');

today.toString(); // -> Fri Jul 24 2020 12:30:00 GMT+0900
today.toLocaleString(); // -> 2020. 7. 24. 오후 12:30:00
today.toLocaleString('ko-KR'); // -> 2020. 7. 24. 오후 12:30:00
today.toLocaleString('en-US'); // -> 7/24/2020, 12:30:00 PM
today.toLocaleString('ja-JP'); // -> 2020/7/24 12:30:00

//.toLocaleTimeString

const today = new Date('2020/7/24/12:30');

today.toString(); // -> Fri Jul 24 2020 12:30:00 GMT+0900 (대한민국 표준시)
today.toLocaleTimeString(); // -> 오후 12:30:00
today.toLocaleTimeString('ko-KR'); // -> 오후 12:30:00
today.toLocaleTimeString('en-US'); // -> 12:30:00 PM
today.toLocaleTimeString('ja-JP'); // -> 12:30:00
728x90
반응형

'스터디 > 모던자바스크립트 deep dive' 카테고리의 다른 글

32장 (String)  (0) 2024.01.09
31장 (RegExp)  (1) 2024.01.09
29장(Math)  (1) 2024.01.08
28장(Number)  (1) 2024.01.08
27장(배열)  (1) 2024.01.08