[JAVASCRIPT.INFO] 5.11 Date 객체와 날짜
5.11 Date 객체와 날짜
객체 생성하기
new Date()
를 호출하면 새로운 Date
객체가 만들어진다.
new Date()
인수 없이 호출하면 현재 날짜와 시간이 저장된 Date
객체가 반환된다.
let now = new Date();
alert(now); // 현재 날짜 및 시간이 출력
new Date(miliseconds)
1970년 1월 1일 0시 0분 0초에서 milliseconds
후의 시점이 저장된 Date
객체 반환
let Jan01_1970 = new Date(0);
1970년의 첫 날을 기준으로 흘러간 밀리초를 나타내는 정수는 타임스탬프라고 부른다.
new Date(datestring)
let date = new Date("2017-01-26");
// 인수로 시간은 지정하지 않았기 때문에 GMT 자정이라고 가정하고 코드가 실행되는 시간대에 따라 출력 문자열이 바뀐다.
new Date(year, month, date, hours, minutes, seconds, ms)
주어진 인수를 조합해 만들 수 있는 날짜가 저장된 객체가 반환된다.
날짜 구성요소 얻기
getFullYear()
: 연도(네자릿수)를 반환
getMonth()
: 월을 반환(0이상 11이하)
getDate()
: 일을 반환(1이상 31이하)
getDay()
: 요일을 반환(일요일이 0)
getUTCFullYear()
, getUTCMonth()
, getUTCDay()
는 표준시 기준의 날짜 구성 요소를 반환해준다. (위의 메서드는 모두 현지 시간 날짜 구성요소를 반환)
getTime()
: 주어진 일시와 1970년 1월 1일 00시 00분 00초 사이의 간격인 타임스탬프 반환
getTimezoneOffset()
: 현지 시간과 표준 시간의 차이를 반환
날짜 구성요소 설정하기
setFullYear(year, [month], [date])
setMonth(month, [date])
setDate(date)
setHours(hour, [min], [sec], [ms])
- etc....
자동 고침
Date
객체엔 자동 고침이라는 유용한 기능이 있어, 범위를 벗어나는 값을 설정하려고 하면 자동 고침 기능이 활성화되면서 값이 자동으로 수정된다.
let date = new Date(2013, 0, 32) // 2013년 1월 32일은 존재하지 않는다.
alert(date); // 2013년 2월 1일이 출력된다.
Date 객체를 숫자로 변경해 시간차 측정하기
Date
객체를 숫자형으로 변경하면 타임스탬프 (date.getTime()
을 호출 시 반환되는 값)가 된다.
let date = new Date();
alert(+date);
Date.now()
Date.now()
를 으용하면 시차를 측정할 수 있음
Date.now()
는 new Date().getTime()
과 의미론 적으론 동일하지만 중간에 Date
객체를 만들지 않는다. 따라서 new Date().getTime()
을 사용하는 것보다 빠르고 가비지 컬렉터의 일을 덜어준다는 장점이 있다.
Date.parse와 문자열
Date.parse(str)
를 사용하면 문자열에서 날짜를 읽어올 수 있다.
YYYY-MM-DD
날짜(연-월-일)"T"
구분 기호로 쓰임HH:mm:ss.sss
시:분:초.밀리초'Z'
(옵션)+-hh:mm
형식의 시간대를 나타냄
let ms = Date.parse('2012-01-26T13:51:50.417-07:00');
alert(ms); // 1327611110417 (타임스탬프)
let date = new Date(Date.parse('2012-01-26T13:51:50.417-07:00'));
alert(date); // Fri Jan 27 2012 05:51:50 GMT+0900 (Korean Standard Time)