개발 뜯기/JavaScript

[JavaScript 개념잡기] JavaScript Date(), N차원 Array

디자인 지지(ZII) 2021. 10. 17. 23:44
반응형



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 생성자(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]}`);
}
반응형