글 작성자: 망고좋아
반응형

 

Date 객체와 날짜

  • Date 객체는 날짜를 저장할 수 있고, 날짜와 관련된 메서드도 제공해주는 내장 객체이다.
  • Date 객체를 활용하여 시간과 날짜를 출력할 수 있다.

 

 

객체 생성하기

  • new Date()를 호출하면 새로운 Date 객체가 만들어진다.

 

new Date()

  • 인수 없이 호출하면 현재 날짜와 시간이 저장된 Date 객체가 반환됩니다.
let now = new Date();
alert( now ); // 현재 날짜 및 시간이 출력됨

 

new Date(year, month, date, hours, minutes, seconds, ms)

  • 주어진 인수를 조합해 만들 수 있는 날짜가 저장된 객체가 반환됩니다(지역 시간대 기준).
  • 첫 번째와 두 번째 인수만 필수 값이다.
  • year는 반드시 네 자리 숫자여야 합니다.
  • month0(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초

// 다른 시간 설정 방법
const xmas = new Date("December 25, 2021 00:00:00"); // Sat Dec 25 2021 00:00:00 GMT+0900 (대한민국 표준시)

 

 

날짜 구성요소 얻기

getFullYear() 연도(네 자릿수)를 반환
getMonth() 월을 반환(0 이상 11 이하).
getDate() 일을 반환(1 이상 31 이하).
getHours()
getMinutes()
getSeconds()
getMilliseconds() 밀리초
getDay() 요일 반환
일요일을 나타내는 0부터 토요일을 나타내는 6까지의 숫자 중 하나를 반환한다.
getTime() 주어진 일시와 1970년 1월 1일 00시 00분 00초 사이의 간격(밀리초 단위)인 타임스탬프를 반환한다.

 

🔔 getYear() 말고 getFullYear()를 사용!!

  • 여러 자바스크립트 엔진이 더는 사용되지 않는(deprecated) 비표준 메서드 getYear()을 구현하고 있다.
  • 이 메서드는 두 자릿수 연도를 반환하는 경우가 있기 때문에 절대 사용해선 안 된다.
  • 연도 정보를 얻고 싶다면 getFullYear()를 사용하자!!!!
// 현재 일시
let date = new Date();

// 현지 시간 기준 시
alert( date.getHours() );

// 표준시간대(UTC+0, 일광 절약 시간제를 적용하지 않은 런던 시간) 기준 시
alert( date.getUTCHours() );

 

 

날짜 구성요소 설정하기

날짜 구성요소 메소드

  1. setFullYear(year, [month], [date])
  2. setMonth(month, [date])
  3. setDate(date)
  4. setHours(hour, [min], [sec], [ms])
  5. setMinutes(min, [sec], [ms])
  6. setSeconds(sec, [ms])
  7. setMilliseconds(ms)
  8. setTime(milliseconds)

 

 

날짜 자동고침

  • 범위를 벗어나는 값을 설정하려고 하면 자동 고침 기능이 활성화되면서 값이 자동으로 수정된다.
let date = new Date(2013, 0, 32); // 2013년 1월 32일은 없다.
alert(date); // 2013년 2월 1일이 출력된다.
  • 자동 고침은 일정 시간이 지난 후의 날짜를 구하는데도 종종 사용된다.
let date = new Date();
date.setSeconds(date.getSeconds() + 70);

alert( date ); // 70초 후의 날짜가 출력됩니다.

 

 

Date 객체를 숫자로 변경해 시간차 측정하기

  • Date 객체를 숫자형으로 변경하면 타임스탬프(date.getTime()을 호출 시 반환되는 값)가 됩니다.
let date = new Date();
alert(+date); // 타임스탬프(date.getTime()를 호출한 것과 동일함)

 

 

Date.now()

  • Date 객체를 만들지 않고도 시차를 측정할 방법이 있다.
  • 현재 타임스탬프를 반환하는 메서드 Date.now()를 응용하면 된다.
  • Date.now()new Date().getTime()과 의미론적으로 동일하지만 중간에 Date 객체를 만들지 않는다는 점이 다르다
  • new Date().getTime()를 사용하는 것보다 빠르고 가비지 컬렉터의 일을 덜어준다는 장점이 있다.
let start = Date.now(); // 1970년 1월 1일부터 현재까지의 밀리초

// 원하는 작업을 수행
for (let i = 0; i < 100000; i++) {
  let doSomething = i * i * i;
}

let end = Date.now(); // done

alert( `반복문을 모두 도는데 ${end - start} 밀리초가 걸렸습니다.` ); // Date 객체가 아닌 숫자끼리 차감함

 

 

Date.parse와 문자열

  • 메서드 Date.parse(str)를 사용하면 문자열에서 날짜를 읽어올 수 있다.
  • 단, 문자열의 형식은 YYYY-MM-DDTHH:mm:ss.sssZ처럼 생겨야 한다.
    • YYYY-MM-DD – 날짜(연-월-일)
    • "T" – 구분 기호로 쓰임
    • HH:mm:ss.sss – 시:분:초.밀리초
    • 'Z'(옵션) – +-hh:mm 형식의 시간대를 나타냄. Z 한 글자인 경우엔 UTC+0을 나타냄
  • YYYY-MM-DD, YYYY-MM, YYYY같이 더 짧은 문자열 형식도 가능합니다.
  • 문자열의 형식이 조건에 맞지 않은 경우엔 NaN이 반환된다.
let ms = Date.parse('2012-01-26T13:51:50.417-07:00');

alert(ms); // 1327611110417  (타임스탬프)

// Date.parse(str)를 이용하면 타임스탬프만으로도 새로운 Date 객체를 바로 만들 수 있다
let date = new Date( Date.parse('2012-01-26T13:51:50.417-07:00') );

alert(date);

 

 

📌 참고

반응형