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 |