본문 바로가기

개발/JS|TS

특정 일의 월요일, 일요일 찾기 (feat.Chat GPT)

예전에(3년 전) 만들어둔 부끄러운 코드를 GPT에게 [간결하게] 만들어 달라고 요청했다.

기존 코드 

var fromDate = applyFrom.getDay(); // 시작일 (화면에서 선택한 값)
while(fromDate!=1){ 
  applyFrom.setDate(applyFrom.getDate()-1);
  fromDate = applyFrom.getDay();
}

var toDate = applyTo.getDay(); // 종료일 (화면에서 선택한 값)
while(toDate!=0){
  applyTo.setDate(applyTo.getDate()+1);
  toDate = applyTo.getDay();
}

// 월요일
let monday = applyFrom.toISOString().slice(0, 10);

// 일요일 
let sunday = applyTo.toISOString().slice(0, 10);

 

GPT 코드 

function getStartOfWeek(date) {
  const dayOfWeek = date.getDay();
  const diff = (dayOfWeek === 0 ? 6 : dayOfWeek - 1); // 월요일(요일 값 1)로 이동하기 위한 차이
  date.setDate(date.getDate() - diff);
  return date.toISOString().slice(0, 10); // YYYY-MM-DD 형식으로 반환
}

function getEndOfWeek(date) {
  const dayOfWeek = date.getDay();
  const diff = (dayOfWeek === 0 ? 0 : 7 - dayOfWeek); // 일요일(요일 값 0)로 이동하기 위한 차이
  date.setDate(date.getDate() + diff);
  return date.toISOString().slice(0, 10); // YYYY-MM-DD 형식으로 반환
}

const applyFrom = new Date(); // 원하는 시작 날짜 설정
const applyTo = new Date(); // 원하는 종료 날짜 설정

const monday = getStartOfWeek(applyFrom);
const sunday = getEndOfWeek(applyTo);
GPT:
물론, 코드를 더 간결하게 만들어보겠습니다. JavaScript의 Date 객체를 이용하여 주어진 날짜를 월요일과 일요일로 간단하게 이동시킬 수 있습니다. 불필요한 변수를 줄이고, 중복 코드를 최소화하여 간결하게 만들어 보겠습니다.
위 코드에서는 getStartOfWeek 함수와 getEndOfWeek 함수를 사용하여 applyFrom과 applyTo 날짜를 월요일과 일요일로 이동시키고, toISOString() 메서드와 slice() 메서드를 사용하여 간결하게 날짜를 문자열로 변환합니다.

이렇게 수정된 코드로도 원하는 기능을 간단하게 수행할 수 있습니다.

GPT를 활용해보면 배울 점도 있고 다양하게 시도를 해볼 포인트도 제공해주는 것 같다.

앞으로 많이 활용해봐야겠다.