WEB/Javascript

[JAVASCRIPT.INFO] 5.11 Date 객체와 날짜

dev-olive 2023. 1. 16. 20:45

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)