2022. 3. 5. 12:30ㆍFront-end/JavaScript
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.setMinutes(), Date.setSeconds()
- 그 외 날짜 정보 얻기 : Date.getDay(), Date.getTime(), Date.getTimezoneOffset()
- 그 외 날짜 정보 설정 : Date.parse(string)
Date 생성자
Date 생성자 종류 : new Date(), new Date(milliseconds), new Date(date_string), new Date(year, month, date, hours, minutes, seconds, ms)
let date_now = new Date(); // object
let date_str = Date(); // string
console.log(date_now); // 2022-03-05T02:12:31.998Z
console.log(date_str); // Sat Mar 05 2022 11:12:31 GMT+0900 (대한민국 표준시)
let date_ms_1 = new Date(0);
let date_ms_2 = new Date(1000 * 3600 * 24);
console.log(date_ms_1); // 1970-01-01T00:00:00.000Z
console.log(date_ms_2); // 1970-01-02T00:00:00.000Z
let date_string = new Date("2022-01-01");
console.log(date_string); // 2022-01-01T00:00:00.000Z
let date_params_1 = new Date(2022, 0, 1); // month : 1월(0) ~ 12월(11)
let date_params_2 = new Date(Date.UTC(2022, 0, 1));
console.log(date_params_1); // 2021-12-31T15:00:00.000Z
console.log(date_params_2); // 2022-01-01T00:00:00.000Z
날짜 정보 얻기
년 : Date.getFullYear(), 월 : Date.getMonth(), 일 : Date.getDate(), 요일 : Date.getDay()
시 : Date.getHours(), 분 : Date.getMinutes(), 초 : Date.getSeconds()
협정 세계시 차분(ms) : Date.getTime(), 표준 시간 차분(min) : Date.getTimezoneOffset()
let date = new Date(Date.UTC(2022, 0, 1));
console.log(date.getFullYear()); // 2022
console.log(date.getMonth()); // 0
console.log(date.getDate()); // 1
console.log(date.getDay()); // 6 (day : 일요일(0) ~ 토요일(6))
console.log(date.getHours()); // 9
console.log(date.getUTCHours()); // 0
console.log(date.getTime()); // 1640995200000
console.log(new Date(date.getTime())); // 2022-01-01T00:00:00.000Z
console.log(date.getTimezoneOffset()); // -540 (9시간)
날짜 정보 설정
년 : Date.setFullYear(), 월 : Date.setMonth(), 일 : Date.setDate()
시 : Date.setHours(), 분 : Date.setMinutes(), 초 : Date.setSeconds()
let date = new Date(Date.UTC(2022, 0, 1));
let ms_year = date.setFullYear(2022, 2, 5);
console.log(date); // 2022-03-05T00:00:00.000Z
console.log(ms_year); // 1646438400000
console.log(new Date(ms_year)); // 2022-03-05T00:00:00.000Z
date.setDate(1);
console.log(date); // 2022-03-01T00:00:00.000Z
date.setDate(0);
console.log(date); // 2022-02-28T00:00:00.000Z
date.setHours(date.getHours() + 2);
console.log(date); // 2022-02-28T02:00:00.000Z
parse
문자열 기반 날짜 정보 설정 : Date.parse(YYYY-MM-DDTHH:mm:ss.sssZ)
날짜 : YYYY-MM-DD (2022-01-01)
구분 : T (구분 기호)
시간 : HH:mm:ss.sss (00:00:00.000)
옵션 : Z (미 설정할 경우 현재 로컬 기준 UTC, 설정할 경우 UTC+0 기준으로 시간 설정)
let ms_parse = Date.parse("2022-03-05T00:00:00.000");
console.log(ms_parse); // 1646406000000
console.log(new Date(ms_parse)); // 2022-03-04T15:00:00.000Z
console.log(new Date(Date.parse("2022-03-05T00:00:00.000Z"))); // 2022-03-05T00: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) {
let date_1 = new Date("2022-01-01");
let date_2 = new Date();
let start = Date.now();
for (let i = 0; i < 1000000; i++) {
callback(date_1, date_2);
}
return Date.now() - start;
}
console.log("dateSub : " + benchmark(dateSub) + "ms"); // dateSub : 109ms
console.log("getTimeSub : " + benchmark(getTimeSub) + "ms"); // getTimeSub : 9ms
'Front-end > JavaScript' 카테고리의 다른 글
[JS] 자바스크립트 배열(Array) 개념 정리 (0) | 2022.03.09 |
---|---|
[JS] 다차원 배열 (multidimensional array) (0) | 2022.03.06 |
[JS] Math 객체의 개념과 대표적인 메서드 11가지 (0) | 2022.03.05 |
[JS] 자바스크립트 컬렉션(JavaScript Collection) - Set (0) | 2022.03.05 |
[JS] 자바스크립트 컬렉션(JavaScript Collection) - Map (0) | 2022.03.05 |