반응형
원본 작성일: 2014년경
보완 작성일: 2026.02.14

JavaScript에서 날짜를 원하는 형식으로 표시하거나, 특정 기간만큼 더하고 빼는 계산이 필요할 때 정리해둔 유틸 함수들이다.
날짜 문자열 → 포맷 변환
yyyyMMddHHmm 형식의 문자열을 원하는 형태로 변환하는 함수다.
function formatDateStr(dateStr, format, separator) {
var y = dateStr.substring(0, 4);
var m = dateStr.substring(4, 6);
var d = dateStr.substring(6, 8);
var h = dateStr.substring(8, 10);
var min = dateStr.substring(10, 12);
if (separator === 'ko') {
// 한글 형식: "2014년 02월 13일"
if (format === 'yyyyMMdd') return y + '년 ' + m + '월 ' + d + '일';
return y + '년 ' + m + '월 ' + d + '일 ' + h + '시 ' + min + '분';
}
// 구분자 형식: "2014/02/13"
if (format === 'yyyyMMdd') return y + separator + m + separator + d;
return y + separator + m + separator + d + ' ' + h + ':' + min;
}
formatDateStr('20140213', 'yyyyMMdd', 'ko'); // "2014년 02월 13일"
formatDateStr('20140213', 'yyyyMMdd', '-'); // "2014-02-13"날짜 계산 (n일 전/후)
현재 시간 기준으로 년/월/일/시/분/초를 더하거나 빼는 함수다.
function calcDate(field, interval, format, separator) {
var now = new Date();
switch (field) {
case 'YY': now.setFullYear(now.getFullYear() + interval); break;
case 'MM': now.setMonth(now.getMonth() + interval); break;
case 'DD': now.setDate(now.getDate() + interval); break;
case 'HH': now.setHours(now.getHours() + interval); break;
case 'MIN': now.setMinutes(now.getMinutes() + interval); break;
case 'SS': now.setSeconds(now.getSeconds() + interval); break;
}
// Date 객체를 문자열로 변환 후 포맷 적용
var y = now.getFullYear();
var m = String(now.getMonth() + 1).padStart(2, '0');
var d = String(now.getDate()).padStart(2, '0');
var h = String(now.getHours()).padStart(2, '0');
var min = String(now.getMinutes()).padStart(2, '0');
var s = String(now.getSeconds()).padStart(2, '0');
if (format === 'yyyyMMdd') return y + separator + m + separator + d;
return y + separator + m + separator + d + ' ' + h + ':' + min + ':' + s;
}
calcDate('DD', 30, 'yyyyMMddHHmm', '-'); // 30일 뒤 날짜
calcDate('MM', -1, 'yyyyMMdd', '/'); // 1개월 전 날짜지금이라면? 대안들
Intl.DateTimeFormat (내장)
별도 라이브러리 없이 로케일에 맞는 포맷을 적용할 수 있다.
const date = new Date();
// 한국어 형식
new Intl.DateTimeFormat('ko-KR').format(date);
// "2026. 2. 14."
// 상세 옵션
new Intl.DateTimeFormat('ko-KR', {
year: 'numeric', month: 'long', day: 'numeric',
hour: '2-digit', minute: '2-digit'
}).format(date);
// "2026년 2월 14일 오후 3:30"dayjs (경량 라이브러리)
moment.js의 대체제로.
import dayjs from 'dayjs';
dayjs().format('YYYY-MM-DD'); // "2026-02-14"
dayjs().add(30, 'day').format('YYYY-MM-DD'); // 30일 뒤
dayjs().subtract(1, 'month').format('YYYY/MM/DD'); // 1개월 전어떤 걸 쓸까
| 상황 | 추천 |
|---|---|
| 단순 표시만 | Intl.DateTimeFormat |
| 계산 + 포맷 모두 필요 | dayjs |
| 레거시 프로젝트 유지보수 | 기존 유틸 함수 유지 |
반응형
'Mechanic: IT 인터넷 > Mechanic, M-Tech' 카테고리의 다른 글
| JavaScript 숫자에 콤마(쉼표) 추가하기 - 천 단위 구분 (0) | 2014.02.14 |
|---|---|
| JavaScript 반올림, 올림, 내림 - Math.round, ceil, floor 자리수 지정 (0) | 2014.02.13 |
| Eclipse 설치와 Workspace 설정 - Encoding, JDK, Tomcat까지 (0) | 2014.01.17 |
| Maven 설치 가이드 - Windows 환경변수 설정까지 (0) | 2014.01.17 |
| Maven + Eclipse 기본 셋팅 - 환경변수부터 플러그인까지 (0) | 2013.05.09 |