Skip to content

Latest commit

 

History

History
182 lines (140 loc) · 5.32 KB

19. Date.md

File metadata and controls

182 lines (140 loc) · 5.32 KB

Date

1. Date

2. Date 생성자

3. 날짜 정보 얻기

4. 날짜 정보 설정

5. parse

6. benchmark



1. Date

  • 표준 Built-in 객체로써 날짜와 시간을 위한 속성값과 메서드를 제공하는 객체
  • Date 객체는 1970년 1월 1일 UTC(협정 세계시) 자정과의 시간 차이를 밀리초로 나타내는 정수 값으로 표현
  • 생성자 및 대표 메서드(method)
    • Date 객체 생성자: new Date()
    • 현재 시간 기준 문자열: Date()
    • 날짜 정보 얻기(년/월/일): Date.getFullYear(), Date.getMonth(), Date.getDate()
    • 날짜 정보 얻기(시/분/초/ms): Date.getHours(), Date.getMinutes(), Date.getSeconds()
    • 날짜 정보 설정(년/월/일): Date.setFullYear(), Date.setMonth(), Date.setDate()
    • 날짜 정보 설정(시/분/초/ms): Date.setHours(), Date.Minutes(), Date.setSeconds()
    • 그 외 날짜 정보 얻기: Date.getDay(), Date.getTime(), Date.getTimezoneOffset()
    • 그 외 날짜 정보 설정: Date.parse(string)



2. Date 생성자

  • Date 생성자 종류: new Date(), new Date(milliseconds), new Date(datestring), new Date(year, month, date, hours, minutes, seconds, ms)
  • month 값 범위는 1월(0) ~ 12월(11)
/* 1. Default */
let date_now = new Date();
let date_now_str = Date();

console.log(date_now);
// output: 2021-07-31T13:35:00.570Z
console.log(date_now_str)
// output: Sat Jul 31 2021 22:35:00 GMT+0900 (대한민국 표준시)
console.log(typeof date_now); // output: object
console.log(typeof date_now_str); // output: string

/* 2. milliseconds (1/1000)sec */
let date_ms_1 = new Date(0);
let date_ms_2 = new Date(24 * 3600 * 1000);
console.log(date_ms_1);
// output: 1970-01-01T00:00:00.000Z
console.log(date_ms_2);
// output: 1970-01-02T00:00:00.000Z

/* 3. date string */
let date_str = new Date("2020-01-01");
console.log(date_str);
// 2020-01-01T00:00:00.000Z

/* 4. year, month, ..., ms */
let date_params_1 = new Date(2021, 0, 1);
let date_params_2 = new Date(Date.UTC(2021, 0, 1, 6, 12, 18, 24));
let date_params_3 = new Date(Date.UTC(2021, 0, 1));
console.log(date_params_1);
// output: 2020-12-31T15:00:00.000Z
console.log(date_params_2);
// output: 2021-01-01T06:12:18.024Z
console.log(date_params_3);
// output: 2021-01-01T00:00:00.000Z



3. 날짜 정보 얻기

  • 날짜 정보 얻기(년/월/일/요일): Date.getFullYear(), Date.getMonth(), Date.getDate(), Date.getDay()
  • 날짜 정보 얻기(시/분/초/ms): Date.getHours(), Date.getMinutes(), Date.getSeconds()
  • 주어진 일시 - 1970/1/1 차분(ms): Date.getTime()
  • 현지시간 - 표준 시간 차분(min): Date.getTimezoneOffset()
let date = new Date();
console.log(date); // output: 2021-07-31T13:44:18.196Z

/* 1. year, month, day: 0(sun) ~ 6(sat) */
console.log(date.getFullYear()); // output: 2021
console.log(date.getMonth()); // output: 6
console.log(date.getDay()); // output: 6

/* 2. hours */
console.log(date.getHours()); // output: 22
console.log(date.UTCgetHours()); // output: 13

/* 3.
getTime: (now - date(0)) milliseconds
getTimezoneOffset: (UTC+0 - currentZone) minutes */
console.log(date.getTime()); // output: 1627739058196
console.log(date.getTimezoneOffset()); // output: -540



4. 날짜 정보 설정

  • 날짜 정보 설정(년/월/일): Date.setFullYear(), Date.setMonth(), Date.setDate()
  • 날짜 정보 설정(시/분/초/ms): Date.setHours(), Date.Minutes(), Date.setSeconds()
let date = new Date();

console.log(date); // output: 2021-07-31T14:01:35.091Z

/* 1. set year */
let ms_year = date.setFullYear(2020, 3, 15);
console.log(date); // output: 2020-04-15T14:01:35.091Z
console.log(new Date(ms_year)); // output: 2020-04-15T14:01:35.091Z

/* 2. set date */
date.setDate(1);
console.log(date); // output: 2020-04-01T14:01:35.091Z
date.setDate(0); // setDate(0) => 이전 달의 마지막 날
console.log(date); // output: 2020-03-31T14:01:35.091Z

/* set hours */
date.setHours(date.getHours() + 2);
console.log(date); // output: 2020-03-31T16:01:35.091Z



5. parse

  • 문자열 기반 날짜 정보 설정: Date.parse(YYYY-MM-DDTHH:mm:ss.sssZ)
  • YYYY-MM-DD -> 날짜(연-월-일), "T" -> 구분 기호, HH:mm:ss.sss -> 시:분:초.밀리초
  • 'Z'(option) -> 미 설정할 경우 현재 로컬 기준 UTC로, 설정할 경우 UTC+0 기준으로 시간 설정
let ms_parse = Date.parse("2020-03-31T00:00:00.000");

console.log(ms_parse);
// output: 15842340400000
console.log(new Date(ms_parse));
// output: 2020-03-15T00:00:00.000Z

console.log(new Date(Date.parse("2020-03-31T00:00:00.000Z")));
// output: 2020-03-31T00:00:00.000Z



6. benchmark

  • 성능측정
  • 벤치마크 측정 대상 함수 전후로 시간을 비교하여 알고리즘 성능 측정
function dateSub(old_date, new_date){
  return new_date - old_date;
}

function getTime(old_date, new_date){
  return new_date.getTime() - old_date.getTime();
}

function benchmark(callback_func) {
  let date_1 = new Date("2020-01-01");
  let date_2 = new Date();

  let start = Date.now();
  for (let i=0;i<100000;i++){
    callback_func(date_1, date_2);
  }
  return Date.now() - start;
}

console.log("dateSub: " + benchmark(dateSub) + "ms"); // dateSub: 17ms
console.log("getTime: " + benchmark(getTime) + "ms"); // getTime: 4ms