관리 메뉴

개발이야기

[ Javascript ] 다음날, 이전달을 가져오는 함수 구현 본문

node js/Javascript

[ Javascript ] 다음날, 이전달을 가져오는 함수 구현

안성주지몬 2019. 12. 12. 00:00

이번 포스팅에서는 Date 객체를 사용하여 다음날, 이전달을 가져오는 함수를 구현해보도록 하겠습니다.

특히 '20191210' 같은 형식의 입력값이 주어진 경우 '20191210'의 다음날인 '20191211'과 이전달인 '20191110'을 반환하는 함수를 구현해보겠습니다.

 

1. nextDay 

먼저 입력받은 값의 다음날을 가져오는 함수 nextDay를 구현해보겠습니다.

// date 포맷을 만들어주는 함수 , ex) 20191210
function getDateStr(myDate){
  let month = myDate.getMonth() + 1
  let day = myDate.getDate()
  
  if (month < 10) month = '0' + month
  if (day < 10) day = '0' + day

  return (myDate.getFullYear() + '' + month + '' + day) // '20191211'
}

// 다음날을 구하는 함수 
function nextDay(today) {
  today = today.slice(0,4) + '-' + today.slice(4,6) + '-' + today.slice(6,) // ex) 2019-12-10 
  let d = new Date(today) // 2019-12-10T00:00:00.000Z
  d.setDate(d.getDate() + 1)
  return getDateStr(d)
}

Date를 새로 선언할때 '20191210' 같은 형식의 값을 인자값으로 넘겨주면 에러가 발생하게 됩니다. 따라서 '20191210'을 '2019-12-10' 형식으로 바꿔준 후 인자값으로 넘겨주어야 합니다. 그리고 날짜를 하루 증가시켜준 후 getDateStr 함수로 넘겨주면 됩니다.

getDateStr함수는 원하는 형식으로 Date 객체를 포맷팅해주는 함수입니다.

 

2. lastMonth

입력받은 값의 이전달을 가져오는 함수 lastMonth를 구현해보겠습니다.

// 이전달을 구하는 함수 
function lastMonth(today, diff_month) {
  today = today.slice(0,4) + '-' + today.slice(4,6) + '-' + today.slice(6,) // ex) 2019-12-10 
  let d = new Date(today)
  d.setMonth(d.getMonth() - diff_month)
  return getDateStr(d)
}

함수의 파라미터인 diff_month의 값을 1로 넘겨주면 이전달을 구할 수 있습니다. nextDay와 비슷하지만 getDate가 아닌 getMonth 값의 변화를 준다는 것이 다릅니다.

 

위의 예제를 사용하여 원하는 날짜를 Date 객체와 내장함수를 통해 구하실 수 있습니다.

 

참고

[1] https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date

 

Date

Date 생성자는 시간의 특정 지점을 나타내는 Date 객체를 생성합니다.

developer.mozilla.org

[2] https://codeday.me/ko/qa/20190324/144974.html

 

자바 스크립트, 다음 날짜 가져 오기 [중복] - 코드 로그

이 질문에는 이미 답변이 있습니다.            >            Incrementing a date in JavaScript                                    8 답변                                다음 날 반환하는 다음 스크립트가 있습니다. function today(i) { var today = new Date(); var dd = today.getDate()+1; var mm = t

codeday.me

 

Comments