Date 객체

김수정·2020년 4월 21일
0

날짜 객체 생성

new Date() 현재시간 기준 생성

let now = new Date();
alert( now ); // Wed Apr 22 2020 09:37:56 GMT+0900 (대한민국 표준시)
alert( +now ); // 1587515876470 (date.getTime()과 같은 값)

new Date(milliseconds) 타임스탬프 기준 생성
1970.1.1 0시0분0초를 기준으로 밀리초 후의 시점을 표시

// 1970년 1월 1일 0시 0분 0초(UTC+0)를 나타내는 객체
let Jan01_1970 = new Date(0);
alert( Jan01_1970 );

// 1970년 1월 1일의 24시간 후는 1970년 1월 2일(UTC+0)임
let Jan02_1970 = new Date(24 * 3600 * 1000);
alert( Jan02_1970 );

new Date(datestring) 날짜 문자열 기준 생성

let date = new Date("2017-01-26");
alert(date);
// 인수로 시간은 지정하지 않았기 때문에 GMT 자정이라고 가정하고
// 코드가 실행되는 시간대(timezone)에 따라 출력 문자열이 바뀝니다.
// 따라서 얼럿 창엔
// Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time)
// 혹은
// Wed Jan 25 2017 16:00:00 GMT-0800 (Pacific Standard Time)등이 출력됩니다.

new Date(year, month, date, hours, minutes, seconds, ms) 여러 개 인수로 생성
주어진 인수를 조합해 만들 수 있는 날짜가 저장된 객체가 반환됩니다(지역 시간대 기준). 첫 번째와 두 번째 인수만 필수값입니다.

  • year는 반드시 네 자리 숫자여야 합니다. 2013은 괜찮고 98은 괜찮지 않습니다.
  • month는 0(1월)부터 11(12월) 사이의 숫자여야 합니다.
  • date는 일을 나타내는데, 값이 없는 경우엔 1일로 처리됩니다.
  • hours/minutes/seconds/ms에 값이 없는 경우엔 0으로 처리됩니다.
let date = new Date(2011, 0, 1, 2, 3, 4, 567);
alert( date ); // 2011년 1월 1일, 02시 03분 04.567초

날짜 가져오기

date.getFullYear() - 연도 네 자릿수 반환 getYear()는 이제 비표준 메서드입니다.
date.getMonth() - 0~11사이의 월을 반환합니다.
date.getDate() - 1~31사이의 날짜를 반환합니다.
date.getHours() getMinutes() getSeconds() getMilliseconds() - 시, 분, 초, 밀리초를 반환합니다.
date.getDay() - 0(일요일)~6(토요일)사이의 요일을 반환합니다.
date.getTime() - UTF메서드 없음. 주어진 일시와 1970년 1월 1일 00시 00분 00초 사이의 간격(밀리초 단위) 타임스탬프 반환
date.getTimezoneOffset() - UTF메서드 없음. 현지 시간과 표준 시간의 차이(분)을 반환

날짜 설정하기

setFullYear(year[, month][, date])
setMonth(month, [date])
setDate(date)
setHours(hour, [min], [sec], [ms])
setMinutes(min, [sec], [ms])
setSeconds(sec, [ms])
setMilliseconds(ms)
setTime(milliseconds) - UTF메서드 없음. (1970년 1월 1일 00:00:00 UTC부터 밀리초 이후를 나타내는 날짜를 설정)

자동변환

(1) Date객체를 숫자형으로 변경하면 date.getTime() 반환값과 같습니다. 그렇기 때문에 날짜간 덧셈뺄셈이 가능합니다. Date객체는 마이크로초를 지원하진 않지만 대부분의 호스트환경이 지원하므로 호스트환경 메서드를 사용하여 마이크로초를 사용할 수 있습니다.

let date = new Date();

alert( date ); // Wed Apr 22 2020 09:37:56 GMT+0900 (대한민국 표준시)
alert(+date); // 1587515876470 (date.getTime()과 같은 값)

(2) Date.now()new Date().getTime()과 의미론적으로 같고, Date객체를 만들지 않아 성능적으로 더 우수합니다.

(3) Date.parse(str)
문자열에서 날짜를 읽어올 수 있습니다. 문자열은 YYYY-MM-DDTHH:mm:ss.sssZ 형식이어야 합니다.
년-월-일|시간구분기호|시:분:초.밀리초|옵션(Z=UTC+0)

let date = new Date( Date.parse('2012-01-26T13:51:50.417-07:00') );

alert(date);

(4) 날짜 자동 고침 기능.
범위를 벗어나는 값을 쓸 경우, 날짜를 자동으로 고쳐줍니다.

// (1)
let date = new Date(2013, 0, 32); // 2013년 1월 32일은 없습니다.
alert(date); // 2013년 2월 1일이 출력됩니다.

// (2)
let date = new Date(2016, 0, 2); // 2016년 1월 2일

date.setDate(1); // 1일로 변경합니다.
alert( date );

date.setDate(0); // 일의 최솟값은 1이므로 0을 입력하면 전 달의 마지막 날을 설정한 것과 같은 효과를 봅니다.
alert( date ); // 31 Dec 2015
profile
정리하는 개발자

0개의 댓글