Javascript

Date()

자라나라나무나무나 2022. 6. 4. 14:07
 표준  Built-in 객체로써 날짜와 시간을 위한 속성값과 메서드를 제공하는 객체
Date객체는 1970년 1월 1일 UTC(협정 세계시) 자정과의 시간 차이를 밀리초로 나타내는 정수 값으로 표현
let date_now = new Date();
let date_str = Date();

console.log(date_now);
console.log(date_str);

let date_ms_1 = new Date(0); // ms 단위가 0인 것
console.log(date_ms_1);

// 1000 => 초
// 3600 => 시
let date_ms_2 = new Date(1000 * 3600 *24);
console.log(date_ms_2);

let date_ms_1 = new Date(0); 은 1970년 1월 1일 UTC 기준 시간으로 리턴된다.
 
let date_ms_2 = new Date(1000 * 3600 *24); 처럼 초와 시간을 24시간 곱하게 되면 하루가 더해질 수 있다
 

매개변수를 입력한 경우

let date_string = new Date("2020-01-01");
console.log(date_string);


생성자 타입에 따른  

: 시간 끝에 Z가 붙은 것은 UTC가 0일 때에 대한 출력을 해주는 것

// 1월은 0부터 시작 12월은 11
let date_params_1 = new Date(2021, 0, 1); // YY, MM, DD
console.log(date_params_1);

// why?
// UTC 때문 +9로 되어있어서 UTC 00시 기준으로는 -9가 되기 때문에 15시가 된다.
let date_params_2 = new Date(Date.UTC(2021, 0, 1)); // YY, MM, DD
console.log(date_params_2);


설정한 날짜 기준으로 정보얻기

(년/월/일/요일)

let date = new Date(Date.UTC(2022, 0, 1));

console.log(date);

console.log(date.getFullYear());

console.log(date.getMonth());

// 일요일(0) ~ 토요일(6)
console.log(date.getDay());

22년 1월1일 기준으로 1월은 0 요일은 토요일 6


(시/분/초/ms)

getHours() / getUTCHours()

let date = new Date(Date.UTC(2022, 0, 1));

let date_1 = new Date();

console.log(date.getHours()); // UTC보다 9시간 빨라서
console.log(date.getUTCHours()); // 22-01-01 00 이기 때문에

console.log(date_1.getHours()); // 현재시간 오후1시
console.log(date_1.getUTCHours()); // 1시(13시) - 9 = 4

getTime() 

let date = new Date(Date.UTC(2022, 0, 1));

console.log(date.getTime()); // ms 반환
console.log(new Date(date.getTime()));

getTimezoneOffset()

let date = new Date(Date.UTC(2022, 0, 1));

console.log(date.getTime()); // ms 반환
console.log(new Date(date.getTime())); 

console.log(date.getTimezoneOffset()); // UTC 0 기준으로 얼마만큼 차이가 있는지(분단위) 540/60 = 9(시간) 차이

날짜정보 설정

let date = new Date();

console.log(date);

let ms_year = date.setFullYear(2020, 3, 15);
console.log(date);
console.log(ms_year);
console.log(new Date(ms_year));

setDate()

let date = new Date();

console.log(date);

date.setDate(1);
console.log(date);
date.setDate(0);
console.log(date); // 지정한 전 달의 마지막날로 호출

setHours()

let date = new Date();

console.log(date);

date.setHours(date.getHours() +2);
console.log(date);


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);
console.log(new Date(ms_parse)); // 24- 9 = 15

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


benchmark

: 성능측정

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

function getTimeSub(old_date, new_date) {
    return new_date.getTime() - old_date.getTime(); // ms단위로 변환하여 리턴
};

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

    //console.log(date_1);
    //console.log(date_2);

    let start = Date.now();

    //console.log(start);

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

console.log("dateSub: " + benchmark(dateSub) + "ms");
console.log("getTimeSub: " + benchmark(getTimeSub) + "ms");