반응형
9. Collection(2)
5) Date
표준 Built-in 객체로써 날짜와 시간을 위한 속성값과 메서드를 제공하는 객체
- Date 객체는 1970년 1월 1일 UTC 자정과의 시간 차이를 밀리초로 나타내는 정수 값으로 표현
- 생성자 및 method
- Date 객체 생성자:
new Date()
- 현재 시간 기준 문자열:
Date()
- 날짜 정보 얻기 (년, 월, 일):
Date.getFullYear()
,Date.getMonth()
,Date.getDate()
- 날짜 정보 얻기 (시, 분, 초):
Date.getHours()
,Date.getMinutes()
,Date.getSeconds()
- 날짜 정보 설정 (년, 월, 일):
Date.setFullYear()
,Date.setMonth()
,Date.setDate()
- 날짜 정보 설정 (시, 분, 초):
Date.setHours()
,Date.setMinutes()
,Date.setSeconds()
- 그 외 날짜 정보 얻기: Date.getDay(), Date.getTime(), Date.getTimezoneOffset()
- 그 외 날짜 정보 얻기: Date.getparse()
- Date 객체 생성자:
✔ Date 생성자(1)
/* default */
let date_now = new Date(); // object
let date_now_str = Date(); // string
console.log(date_now);
console.log(date_now_srt);
/* ms (1/1000)sec */
let date_ms_1 = new Date(0);
let date_ms_2 = new Date(24 * 3600 * 1000);
console.log(date_ms_1);
console.log(date_ms_2); // 하루 뒤
✔ Date 생성자(2)
month 값 범위는 1월(0) ~ 12월(11)
/* date string */
let date_str = new Date("2020-04-14");
console.log(date_str);
/* year, month, ... ms */
let date_params_1 = new Date(2021, 0, 1);
let date_params_2 = new Date(Date.UTC(2021, 0, 1, 5, 12, 58, 84));
let date_params_3 = new Date(Date.UTC(2021, 0, 1));
console.log(date_params_1); // 2020 12 31 > UTC 때문
console.log(date_params_2); // 고정한 값 반환
console.log(date_params_3);
✔ 날짜 정보 얻기
let date = new Date();
/* year, month, day */
console.log(date.getFullYear);
console.log(date.getMonth);
console.log(date.getDay);
/* hours */
console.log(date.getHours());
console.log(date.getUTCHours()); // 고정
/* getTime, getTimezoneOffset */
console.log(date.getTime());
console.log(date.getTimezoneOffset()); // UTC +0과 차이 구할 수 있음
✔ 날짜 정보 설정
let date = new Date();
/* set year */
let ms_year = date.setFullYear(2021, 09, 30);
conosle.log(new Date(ms_year)); // 2021-10-30T05:52:49.343Z
/* set date */
date.setDate(1); // 1일로 설정
date.setDate(0); // 이전 달의 마지막 날
/* set hours */
date.setHours(date.getHours() + 2);
console.log(date); // 시간 + 2
✔ parse
날짜 정보 설정
- 문자열 기반 날짜 정보 설정: Date.parse()
let ms_parse = Date.parse("2021-09-30T00:00:00.000");
console.log(ms_parse);
console.log(new Date(ms_parse));
console.log(new Date(Date.parse("2021-09-30T00:00:00.000Z")));
- YYYY-MM-DD -> 날짜(연-월-일), "T" -> 구분기호, HH:mm:ss.sss -> 시:분:초.밀리초
- 'Z'(option) -> 미 설정할 경우 현재 로컬 기준 UTC로, 설정하면 UTC+0 기준으로 설정
✔ benchmark
성능 측정: 벤치마크 측정 대상 함수 전후로 시간을 비교해 알고리즘 성능 측정
function dateSub(oldDate, newDate) {
return newDate - oldDate;
}
function getTime(oldDate, newDate) {
return newDate.getTime() - oldDate.getTime();
}
function benchmark(callback_func) {
let date_1 = new Date("2020-09-30");
let date_2 = new Date();
let start = Date.now();
for (let i = 0; i < 100000; i++) {
callback_func(date_1, date_2); // dateSub, getTime을 콜백 함수로 받아옴
}
return Date.now() - start;
}
console.log("dateSub: " + benchmark(dateSub) + "ms");
console.log("getTime: " + benchmark(getTime) + "ms");
6) N차원 Array
배열(Array) 안에 N개 만큼의 배열이 존재하는 객체
- 2, 3차원 지도 정보, RGB를 저장하는 2차원 사진 파일 등을 표현할 때 활용 가능
✔ 2차원 배열
2차원 배열은 array[i][j]로 접근 하며, 배열 전체를 push(), pop() 가능
let array = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
console.log(array[0]); // [ 1, 2, 3 ]
console.log(array[1][2]); // 6
let arr2 = array.pop();
console.log(arr2); // [ 7, 8, 9 ]
console.log(array); // [ [ 1, 2, 3 ], [ 4, 5, 6 ] ]
let arr3 = array.push([10, 11, 12]);
console.log(arr3); // push한 값 return
console.log(array); // [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 10, 11, 12 ] ]
✔ 2차원 배열 반복문
for loop를 이용한 접근
let array = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
for (let i = 0; i < array.length; i++) {
for (let j = 0; j < array[i].length; j++) {
console.log(array[i][j]);
}
}
let fruits = [
["banana", 50],
["grape", 100],
["mango", 150],
];
for (let i = 0; i < 3; i++) { // array 재활용 가능
console.log(`fruit: ${fruits[i][0]}, amount: ${fruits[i][1]}`);
}
반응형