Date
- 표준 Built-in 객체로서 날짜와 시간을 위한 속성값과 메서드를 제공하는 객체
- Date 객체는 1970년 1월 1일 UTC 자정과의 시간 차이를 밀리초로 나타내는 정수 값으로 표현
- 생성자 및 메서드
- 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.setMinutes(), Date.setSeconds()
Date 생성자
- Date 생성자 종류 : new Date(), new Date(miniseconds), new Date(datestring), nw Date(year, month, date, hours, minutes, seconds, ms)
let date_new = new Date();
let date_str = Date();
console.log(date_new); // 2022-07-25T08:22:03.837Z object
console.log(date_str); // Mon Jul 25 2022 17:22:03 GMT+0900 (대한민국 표준시) string
let date_ms_1 = new Date(0);
console.log(date_ms_1); // 1970-01-01T00:00:00.000Z
let date_ms_2 = new Date(1000 * 3600 * 24);
console.log(date_ms_2); // 1970-01-02T00:00:00.000Z
let date_string = new Date("2020-01-01");
console.log(date_string); // 2020-01-01T00:00:00.000Z
// month : 1월(0) 12월(11);
let date_params_1 = new Date(2021, 0, 1);
let date_params_2 = new Date(Date.UTC(2021, 0, 1)); // UTC 보정
console.log(date_params_1); // 2020-12-31T15:00:00.000Z
console.log(date_params_2); // 2021-01-01T00:00:00.000Z
날짜 정보 얻기
- 날짜 정보 얻기 (년/월/일/요일) : 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(Date.UTC(2021, 0, 1));
console.log(date);
console.log(date.getFullYear());
console.log(date.getMonth());
// 일요일(0) ~ 토요일(6)
console.log(date.getDay()); // 금요일-> 5
console.log(date.getTime()); // 1609459200000 시간을 ms로
console.log(new Date(date.getTime())); // 2021-01-01T00:00:00.000Z
console.log(date.getTimezoneOffset()); // -540 UTC0과 얼마나 차이나는지 분으로 표시
let date = new Date();
console.log(date); // 2022-07-27T03:07:32.720Z
let ms_year = date.setFullYear(2020,3,15);
console.log(date); // 2020-04-15T03:07:32.720Z
console.log(ms_year); // 1586920052720
date.setDate(1);
console.log(date); // 2020-04-01T03:07:32.720Z
date.setDate(0);
console.log(date); // 2020-03-31T03:08:46.542Z
date.setHours(date.getHours() + 2);
console.log(date); // 2020-03-31T05:09:34.665Z
parse
- 날짜 정보 설정
- 문자열 기반 날짜 정보 설정 : Date.parse(YYYY-MM-DDTHH:mm:ss.sssZ) - ms반환
- YYYY-MM-DD->날짜(연-월-일), "T" -> 구분 기호, HH:mm:ss.sss->시:분:초.밀리초
let ms_parse = Date.parse("2020-03-31T00:00:00.000");
console.log(ms_parse); // 1585580400000
console.log(new Date(ms_parse)); // 2020-03-30T15:00:00.000Z
console.log(new Date(Date.parse("2020-03-31T00:00:00.000Z"))); // 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();
}
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: 18ms
console.log("dateSub: " + benchmark(getTimeSub) + "ms"); // dateSub: 3ms
마지막 benchmark는 알고리즘의 성능 측정을 하기 위해 사용된다는데 예시 함수를 이해하기 어려웠다.
용도는 파악했으니 일단 패스 UTC0 시간이 기본값이라는 걸 기억하자!
'자료구조,알고리즘 > Java Script 기초' 카테고리의 다른 글
[js] 문자열을 ASCII Code 배열로 출력 (0) | 2022.08.14 |
---|---|
JS기초 17 : N차원 Array (0) | 2022.07.27 |
JS기초 15 : Math (0) | 2022.07.25 |
JS기초 14 : Set (0) | 2022.07.25 |
JS기초 13 : Collection, Map, Object 변환 (0) | 2022.07.24 |
댓글