Javascript 날짜 계산기

2023. 1. 31. 13:38·JavaScript
목차
  1. ✅ 왜?
  2. ✅ 날짜 계산기 Script
728x90

✅ 왜?

날짜 선택

위와 같이 오늘 날짜를 기준으로 특정 날짜를 가져오고 싶었는데 여러 페이지에서 매번 new Date() 하는 것도 번거롭고

const now = new Date();
const tomorrow = now.getDate() + 1;

이런 식으로 간단하게 적용해 버리면 31일에는 오류가 날 수밖에 없다.

 

그래서 날짜를 구해야하는 모든 페이지에서 간단하게 적용하기 위해 계산기를 만들었다.

 

✅ 날짜 계산기 Script

function getDate(addYear, addMonth, addDay, token) {
	token = token == undefined || token == null ? "-" : token;
	addYear = addYear == null ? 0 : addYear;
	addMonth = addMonth == null ? 0 : addMonth;
	addDay = addDay == null ? 0 : addDay;
	
	let now = new Date();
	let ry = now.getFullYear();
	let rm = now.getMonth() + 1;
	let rd = now.getDate();
	
	if(addYear != 0) {
		ry = ry + addYear;
	}
	
	if(addMonth != 0) {
		let isRun = true;
		rm = rm + addMonth;
		while(isRun == true) {
			if(rm > 12) {
				ry ++;
				rm = rm - 12;
			} else if(rm < 1) {
				ry--;
				rm = 12 + rm;
			}
			if(rm > 0 && rm < 13) {
				isRun = false;
			}
		}
	}
	
	let cal = new Date(ry, rm, 0);
	
	if(rd > cal.getDate()) {
		rd = cal.getDate();
	}
	
	if(addDay != 0) {
		rd = rd + addDay;
		
		if(rd > cal.getDate() || rd < 1) {
			let isRun = true;
			while(isRun == true) {
				if(rd > cal.getDate()) {
					rd = rd - cal.getDate();
					rm++;
					
					if(rm > 12) {
						ry++;
						rm = 1;
					}
				}
				
				if(rd < 1) {
					rm--;
					if(rm < 1) {
						ry--;
						rm = 12;
					}
					
					cal = new Date(ry, rm, 0);
					rd = cal.getDate() + rd;
				}
				cal = new Date(ry, rm, 0);
				
				if(rd <= cal.getDate() && rd >= 1) {
					isRun = false;
				}
			}
		}
		
		if(rd > cal.getDate() || rd < 1) {
			cal = new Date(ry, rm, 0);
		}
	}
	
	if(rm.toString().length < 2) {
		rm = '0' + rm;
	}
	if(rd.toString().length < 2) {
		rd = '0' + rd;
	}
	
	return ry + token + rm + token + rd;
}

인자를 넘기지 않으면 오늘 날짜가 출력되고 예) 2023-01-31

인자를 넣게 되면 해당 내용을 +, - 해서 출력해 준다. 예) getDate(0, 0, 1) => 2023-02-01,  getDate(0, 0, -1) => 2023-01-30

저작자표시 비영리 (새창열림)

'JavaScript' 카테고리의 다른 글

Resizer.js  (1) 2023.11.18
Uncaught SyntaxError: Invalid shorthand property initializer 해결  (0) 2023.02.27
Swiper <DevTools failed to load source map>  (0) 2022.12.08
TypeError: ws.Server is not a constructor  (0) 2022.11.01
Element Resize 시 window resize 이벤트 발생 속도  (0) 2022.10.31
  1. ✅ 왜?
  2. ✅ 날짜 계산기 Script
'JavaScript' 카테고리의 다른 글
  • Resizer.js
  • Uncaught SyntaxError: Invalid shorthand property initializer 해결
  • Swiper <DevTools failed to load source map>
  • TypeError: ws.Server is not a constructor
요술공주밍키
요술공주밍키
조금씩이라도 꾸준히..
  • 요술공주밍키
    삽질의흔적
    요술공주밍키
  • 전체
    오늘
    어제
    • 분류 전체보기 (130)
      • Java (42)
        • Spring Boot (14)
        • Spring Boot 게시판 (14)
        • 공중화장실 찾기 (4)
        • 쇼핑몰 (8)
      • JavaScript (8)
        • NodeJS (2)
      • Python (5)
        • Django (4)
      • Server (10)
        • Docker (4)
        • K8S (0)
        • Jenkins (1)
      • 알고리즘 (22)
        • 프로그래머스 (17)
        • 백준 (5)
      • Etc (21)
        • 개발 팁 (1)
      • 일상 (21)
        • 독서 포스트 (19)
        • 회고록 (2)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
요술공주밍키
Javascript 날짜 계산기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.