티스토리 뷰

5.11 Date and time

new Date()로 생성한다. 1970년부터 ms 단위로 시간이 표현된다. 자바랑 큰 차이 없는 것으로 보인다.

Access date components

  • getFullYear()
  • getMonth()
  • getDate()
  • getHours(), getMinutes(), getSeconds(), getMilliseconds()
  • getDat()

모두 local time zone 기준으로 반환됨.

Setting date componets

Autocorrection

Date 타입으로 연산을 하거나 올바르지 않은 값이 들어오더라도 날짜를 계산하여 올바르게 자동으로 바꾼다. 자바랑 큰 차이는 없는 것으로 보인다.

let date = new Date(2013, 0, 32); // 32 Jan 2013 ?!?
alert(date); // ...is 1st Feb 2013!

// -------------

let date = new Date(2016, 1,28);
date.setDate(date.getDate() + 2);

alert( date ); // 1 Mar 2016

Benchmarking

Date 타입은 벤치마킹에 활용하기에도 좋다. 아래 예시는 같은 결과를 반환하지만 성능에서 차이를 보인다.

// we have date1 and date2, which function faster returns their difference in ms?
function diffSubtract(date1, date2) {
  return date2 - date1;
}

// or
function diffGetTime(date1, date2) {
  return date2.getTime() - date1.getTime();
}

getTime()의 경우 타입 변환이 없기 때문에, 더욱더 빠르다. 물론 벤치마킹은 여러 번 진행해 보면서 평균값을 기준으로 판단하는 것이 좋을 것이다.

function diffSubtract(date1, date2) {
  return date2 - date1;
}

function diffGetTime(date1, date2) {
  return date2.getTime() - date1.getTime();
}

function bench(f) {
  let date1 = new Date(0);
  let date2 = new Date();

  let start = Date.now();
  for (let i = 0; i < 100000; i++) f(date1, date2);
  return Date.now() - start;
}

alert( 'Time of diffSubtract: ' + bench(diffSubtract) + 'ms' );
alert( 'Time of diffGetTime: ' + bench(diffGetTime) + 'ms' );
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday