20240702 TUE, 데이터 객체와 날짜
A. 데이터 객체와 날짜
let date = new Date(); // 객체 생성자
console.log(date);
// 협정 세계식 = UTC + 0
date = new Date(0);
console.log(date); // 한국 표준시: 기준시간보다 9시간 빠름.
/* 타임 스탬프 : UTC + 0 을 기준으로 지난 시간을 밀리초로 환산한 값 */
date = new Date(24 * 2 * 3600 * 1000);
console.log(date);
let date1 = new Date("2000-10-20/00.00.00");
let date3 = new Date("2000.10.20/00.00.00");
let date2 = new Date("2000/10/20/00.00.00");
let date4 = new Date("2000 10 20/00.00.00");
console.log("date1 : " + date1);
console.log("date2 : " + date2);
console.log("date3 : " + date3);
console.log("date4 : " + date4);
// 년, 월, 일, 시, 분, 초, 밀리초 순서로 매개변수를 설정하기.
let date5 = new Date(2024, 7, 2, 0, 0, 0, 0);
console.log("date5 : " + date5);
date5 = new Date(2024, 6, 2);
let timestamp = date5.getTime();
console.log("date5 : " + date5);
let dateClone = new Date(timestamp);
console.log("dateClone: " + dateClone);
// 1. getFullYear
console.log("getFullYear : " + dateClone.getFullYear());
// 2. getMonth : 월을 반환, 0~11 범위.
console.log("getMonth: " + dateClone.getMonth());
// 3. getDate : 일을 반환.
console.log("getDate : " + dateClone.getDate());
// 4. getDay : 요일을 반환 0(일) ~ 6(토) 범위
console.log("getDay : " + dateClone.getDay());
// 1. setFullYear : 연도 수정
dateClone.setFullYear(1999);
console.log(dateClone);
// 2. setMonth : 월 수정
dateClone.setMonth(9);
console.log(dateClone);
// 3. setDate : 일 수정
dateClone.setDate(19);
console.log(dateClone.toString()); // 날짜, 시간정보
console.log(dateClone.toDateString()); // 날짜
console.log(dateClone.toLocaleString()); // year.month.date 순서의 날짜, 시간정보
console.log(dateClone.toLocaleDateString()); // year.month.date 순서의 날짜
B. Date 객체 응용하기 - n월 단위로 이동해보기
날짜로 해당 객체를 조회 -> 검색 결과가 배열로 반환됨
- 배열에서 제공되는 메소드 (탐색메소드 -> filter() 메소드를 활용)
filter 메소드의 매개변수로 callback 메소드를 전달 == 검색 조건 구현
// 1. n월 단위로 이동
function moveMonth(date, moveMonth) {
// moveMonth - 이동하고 싶은 월의 단위
// 1. 매개변수 date 객체의 월 정보 가져오기
const curTimestamp = date.getTime();
const curMonth = date.getMonth();
const resultDate = new Date(curTimestamp);
// 2. 가져온 월 정보에 +moveMonth 더해주기
// 더한 월을 설정 -> setMonth 사용하기
resultDate.setMonth(curMonth + moveMonth);
return resultDate;
}
const dateA = new Date("1999-10-19");
console.log(dateA.toDateString());
const dateB = moveMonth(dateA, 2);
console.log(dateB);
const dateC = moveMonth(dateA, -1);
console.log(dateC);
Date 객체 응용하기2
/* 첫번째 매개변수 : 검색날짜 조건
두번째 매개변수 : date 정보가 프로퍼티로 있는 객체배열*/
function filterThisMonth(searchConditionDate, dateArray) {
// 매개변수에서 년, 월 정보를 취득
const year = searchConditionDate.getFullYear();
const month = searchConditionDate.getMonth();
// 시작일 종료일 날짜 생성 : 검색범위
const startDate = new Date(2000, 9, 1, 0, 0, 0, 0);
console.log("startDate : " + startDate);
const endDate = new Date(2000, 9 + 1, 0, 23, 59, 59, 0);
console.log("endDate : " + endDate);
// 두 번째 매개변수의 filter 메소드를 사용.
// 검색 범위의 값은 timestmap로 사용.
const resultArray = dateArray.filter(
// 콜백 메소드
(item) =>
startDate.getTime <= item.getTime() && item.getTime <= endDate.getTime()
);
// 검색 결과 배열 반환.
}
const dateArray = [
new Date("1999-10-19"), // 검색 결과 대상
new Date("2002-03-07"), // 검색 결과 대상
new Date("2024-05-19"), // 검색 결과 대상
new Date("2024-07-07"), // 검색 결과 대상
new Date("2024-05-12"), // 검색 결과 대상
];
const today = new Date("2000-10-10/00:00:00");
const filterArray = filterThisMonth(today, dateArray);
console.log("filterArray : " + filterArray);