
JScript 날짜 계산은 밀리초와 setDate를 같이 쓰면 가장 쉽습니다. 날짜 더하기도 날짜 빼기도 같은 원리이고, 저도 처음엔 시간 값이 섞여 하루가 어긋난 적이 있었습니다.
JScript 날짜 계산은 새 Date를 만든 뒤 밀리초나 setDate로 더하고 빼는 방식이 가장 안정적입니다. 월말, 윤년, 시간대만 함께 보면 날짜 차이도 정확하게 맞출 수 있습니다.
JScript에서 날짜를 하루씩 더하려면 어떻게 하나요

하루나 며칠을 더할 때는 getDate와 setDate 조합이 가장 편합니다. 기존 날짜에서 일만 바꾸는 방식이라 읽기 쉽고, 실무에서도 가장 많이 씁니다. 시간은 그대로 두고 날짜만 바꾸고 싶을 때 특히 잘 맞습니다.
기본 형태는 아주 단순합니다. 원본 Date를 바로 바꾸어도 되지만, 원본을 보존하려면 복사본을 만든 뒤 계산하는 편이 더 안전합니다. 저는 일정 계산을 만들 때 늘 이 방식으로 시작합니다.
var d = new Date("2024-01-10")
d.setDate(d.getDate() + 3)
var copy = new Date(d.getTime())
copy.setDate(copy.getDate() + 7)
| 방법 | 쓰는 상황 | 특징 |
|---|---|---|
| setDate | 하루 단위 이동 | 가장 읽기 쉽고 자연스럽다 |
| getTime 더하기 | 시간까지 포함한 계산 | 밀리초 단위로 정확하게 더한다 |
| 새 Date 생성 | 원본 보존이 필요할 때 | 기존 값이 변하지 않는다 |
JScript에서 날짜를 빼려면 어떻게 하나요
날짜 빼기도 더하기와 같은 방식입니다. 원하는 일수만큼 음수로 넣거나, 빼기 연산처럼 값을 줄이면 됩니다. 한 주 전 날짜나 전월 기준일을 구할 때 자주 쓰입니다.
예를 들어 7일 전 날짜가 필요하면 getDate에서 7을 빼면 됩니다. 일 단위 계산은 setDate 하나로 정리해 두면 코드가 짧아집니다. 저는 회차별 마감일 계산에서 이 패턴을 가장 자주 씁니다.
var d = new Date("2024-03-15")
d.setDate(d.getDate() - 7)
var prev = new Date(d.getTime())
prev.setDate(prev.getDate() - 30)
| 상황 | 추천 방식 | 이유 |
|---|---|---|
| 7일 전 | setDate 값 감소 | 계산이 직관적이다 |
| 한 달 전 | setMonth | 달 단위 의미가 분명하다 |
| 몇 시간 전 | getTime 빼기 | 시간 차이를 그대로 반영한다 |
날짜 차이는 몇 일인지 어떻게 구하나요
날짜 차이는 getTime 차이를 구한 뒤 하루 기준 밀리초로 나누면 됩니다. 두 날짜 사이가 몇 일인지 볼 때 가장 표준적인 방식입니다. 다만 시간까지 들어 있으면 하루가 살짝 어긋날 수 있습니다.
그래서 저는 차이를 구하기 전 시간을 0시로 맞추거나, 날짜만 남기는 방식으로 정리합니다. 같은 날짜라도 시간대가 다르면 결과가 달라질 수 있기 때문입니다. 이 부분만 챙기면 대부분의 일정 계산은 안정적으로 맞습니다.
var start = new Date("2024-02-01")
var end = new Date("2024-02-10")
start.setHours(0, 0, 0, 0)
end.setHours(0, 0, 0, 0)
var diff = (end.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)
제가 처음 차이 계산을 만들 때는 시간을 그대로 둔 채 나누어서 결과가 하루씩 흔들린 적이 있었습니다. 그 뒤로는 날짜 비교 전 시간 정리를 먼저 넣는 습관을 들였습니다. 이 한 단계가 있으면 결과가 훨씬 안정적입니다.
월말과 윤년은 왜 따로 챙겨야 하나요
월 단위 계산은 일 단위보다 조금 더 조심해야 합니다. 월은 0부터 시작하고, 말일이 있는 달은 다음 달로 넘어갈 때 날짜가 자동 조정될 수 있습니다. 그래서 1월 31일처럼 끝자리가 있는 날짜는 별도 확인이 필요합니다.
특히 정산일이나 예약일처럼 말일 기준 로직이 들어가면 setMonth만 쓰지 말고 기준일을 다시 잡는 편이 좋습니다. 저는 이 부분을 처음에 놓쳐서 2월 처리 결과가 기대와 다르게 보였던 적이 있습니다. 이후에는 항상 월말과 윤년을 같이 확인합니다.
var d = new Date(2024, 0, 31)
var next = new Date(d.getFullYear(), d.getMonth() + 1, d.getDate())
윤년은 2월 일수만 달라지므로, 날짜 유효성 검사와 함께 보면 충분합니다. 달력 기준 계산은 항상 월과 일이 함께 움직인다는 점만 기억하면 됩니다. 그 한 줄이 전체 로직을 단순하게 만들어 줍니다.
| 항목 | 주의할 점 | 추천 대응 |
|---|---|---|
| 월 단위 이동 | 월은 0부터 시작 | getMonth와 setMonth를 함께 본다 |
| 월말 날짜 | 다음 달로 자연스럽게 넘어갈 수 있다 | 기준일을 복사해 계산한다 |
| 윤년 | 2월 일수가 달라진다 | 달력 검증을 같이 넣는다 |
실무에서 가장 많이 쓰는 방식은 무엇인가요
실무에서는 하루 단위는 setDate, 기간 차이는 getTime, 월 단위는 setMonth로 나눠 쓰는 경우가 많습니다. 한 가지 방식만 고집하기보다 상황에 맞게 나누는 편이 더 읽기 쉽습니다. 유지보수도 훨씬 편해집니다.
제가 가장 자주 쓰는 조합은 복사본 생성 뒤 계산입니다. 원본이 바뀌지 않아서 디버깅이 쉬워지고, 다른 로직과 섞여도 안정적입니다. 특히 여러 날짜를 연속으로 계산하는 화면에서는 이 방식이 잘 맞습니다.
function addDays(src, days) {
var d = new Date(src.getTime())
d.setDate(d.getDate() + days)
return d
}
function diffDays(a, b) {
var x = new Date(a.getTime())
var y = new Date(b.getTime())
x.setHours(0, 0, 0, 0)
y.setHours(0, 0, 0, 0)
return (y.getTime() - x.getTime()) / (1000 * 60 * 60 * 24)
}
JScript 날짜 계산은 복잡해 보이지만 핵심은 단순합니다. 더하기와 빼기는 setDate, 차이 계산은 getTime, 월말 처리는 기준일 보정으로 정리하면 됩니다. 이 세 가지만 잡아도 대부분의 날짜 로직을 깔끔하게 만들 수 있습니다.
자주 묻는 질문
JScript에서 날짜를 하루씩 더하려면 어떻게 하나요?
getDate로 현재 일자를 가져온 뒤 setDate에 더할 값을 넣으면 됩니다. 원본을 보존하려면 new Date로 복사한 뒤 계산하는 방식이 안전합니다.
JScript에서 날짜를 빼려면 어떻게 하나요?
더하기와 같은 방식으로 setDate에 음수 값을 넣으면 됩니다. 7일 전처럼 일 단위로 줄일 때 가장 읽기 쉽습니다.
두 날짜 사이의 일수 차이는 어떻게 구하나요?
두 Date의 getTime 차이를 구한 뒤 하루 기준 밀리초로 나누면 됩니다. 시간 때문에 결과가 흔들릴 수 있으니 비교 전에 시간을 0시로 맞추는 편이 좋습니다.
월말이나 윤년은 날짜 계산에서 왜 따로 봐야 하나요?
월 단위 이동은 말일에서 다음 달로 넘어가며 날짜가 자동 조정될 수 있어서 주의가 필요합니다. 특히 2월과 월말 기준일은 setMonth만 쓰기보다 기준일을 다시 확인하는 것이 안전합니다.