coForward DateUtils
날짜와 시간을 손쉽게 처리하기 위한 날짜 유틸리티 라이브러리입니다.
DateUtils는 날짜 포맷 변환, 날짜 계산, 요일 조회, 시간 포맷 등 프로젝트에서 자주 사용하는 날짜 기능을 제공합니다.
다양한 입력 형식을 지원하며 일관된 날짜 처리를 통해 개발 생산성을 높일 수 있습니다.
날짜 포맷 변환
YYYY-MM-DD, YYYYMMDD 등 다양한 형식으로 날짜를 변환합니다.
시간 포맷
HH:mm:ss 형식의 시간을 생성하거나 문자열 시간을 변환합니다.
날짜 계산
기준일 기준으로 일수 또는 월수를 더하거나 뺄 수 있습니다.
요일 조회
한국어와 영어 요일을 모두 지원합니다.
날짜 차이 계산
두 날짜 간의 차이를 계산할 수 있습니다.
다양한 입력 지원
Date 객체와 문자열 날짜를 모두 처리합니다.
coForward DateUtils 소개
coForward DateUtils는 날짜 값을
Date 객체로 파싱하고, 날짜·시간·요일을 화면 표시용
문자열로 변환하는 사내 공통 JavaScript 유틸입니다.
실제 클래스명은 DateFormat이며,
dateUtils.js에서 기본 export로 제공됩니다.
이 문서에서 다루는 기능
| 기능 | 설명 |
|---|---|
| 날짜 파싱 |
Date, 날짜 문자열,
YYYYMMDD 문자열을 Date 객체로 변환합니다.
|
| 날짜 포맷 |
YYYY-MM-DD, YYYYMMDD 등 날짜
문자열을 만듭니다.
|
| 시간 포맷 |
HH:mm:ss 또는 HH:mm 형식으로
시간을 표시합니다.
|
| 일 단위 계산 | 기준일에서 n일 전후 날짜를 구합니다. |
| 월 단위 계산 | 기준일에서 n개월 전후 날짜 또는 해당 월 말일을 구합니다. |
| 요일 표시 | 한국어 또는 영어 요일을 반환합니다. |
| Date 반환 | 내부 Date 객체 또는 ISO 문자열을 반환합니다. |
필수 준비물
dateUtils.js파일- ES Module을 지원하는 브라우저 또는 프로젝트 번들러
적용 준비
2-1. 클래스 불러오기
페이지용 JavaScript 파일에서 클래스를 import합니다.
// date-page.js
import DateFormat from '/path/to/dateUtils.js';
📌 참고
JavaScript 경로는 프로젝트의 실제 정적 리소스 경로에 맞게
변경합니다.
2-2. HTML 예시
<p>오늘 날짜: <span id="todayText"></span></p>
<p>현재 시간: <span id="timeText"></span></p>
<script type="module" src="/js/date-page.js"></script>
기본 생성 및 사용
DateFormat은 생성자에 날짜 값을 전달해 사용합니다.
import DateFormat from '/path/to/dateUtils.js';
const date = new DateFormat('2026-07-13');
console.log(date.format('YYYY-MM-DD'));
console.log(date.dayOfWeek(false, 'ko'));
기본 적용 순서
클래스 import
↓
인스턴스 생성
↓
포맷 또는 계산 메서드 호출
↓
화면에 결과 반영
생성자에 사용할 수 있는 값
| 값 | 예시 | 설명 |
|---|---|---|
Date 객체 |
new Date(2026, 6, 13) |
전달한 Date 객체를 사용합니다. |
| 날짜 문자열 | '2026-07-13' |
new Date(value)로 파싱합니다. |
| 8자리 문자열 | '20260713' |
내부에서 '2026-07-13' 형식으로 변환한 뒤
파싱합니다.
|
| 값 없음 | new DateFormat() |
현재 날짜와 시간을 사용합니다. |
정적 생성 메서드
const date = DateFormat.of('2026-07-13');
DateFormat.of(value)는
new DateFormat(value)와 같은 방식으로 새 인스턴스를
반환합니다.
날짜 포맷
기본 날짜 문자열
const date = new DateFormat('2026-07-13');
console.log(date.formatYmd('2026-07-13')); // 20260713
console.log(date.formatYmd('2026-07-13', '-')); // 2026-07-13
console.log(date.formatYmd('20260713', '.')); // 2026.07.13
formatYmd(value, gubun)은 전달한 날짜 값을
YYYYMMDD 또는 구분자가 포함된 형식으로 반환합니다.
| 인자 | 기본값 | 설명 |
|---|---|---|
value |
null |
변환할 날짜 값입니다. 값이 없으면 빈 문자열을 반환합니다. |
gubun |
빈 문자열 | 연·월·일 사이에 넣을 구분자입니다. |
⚠️ 중요
formatYmd()는 value가 없으면 내부
기준일이 아니라 빈 문자열을 반환합니다. 현재 인스턴스 날짜를
출력하려면 format()을 사용합니다.
사용자 지정 포맷
const date = new DateFormat('2026-07-13T09:05:07');
console.log(date.format()); // 2026-07-13
console.log(date.format('YYYY.MM.DD')); // 2026.07.13
console.log(date.format('yy/m/d')); // 26/7/13
console.log(date.format('YYYY-MM-DD hh:mm:ss')); // 2026-07-13 09:05:07
console.log(date.format('YYYY-MM-DD W', 'ko')); // 2026-07-13 월
console.log(date.format('YYYY-MM-DD W', 'en')); // 2026-07-13 Mon
포맷 토큰
| 토큰 | 설명 | 예시 |
|---|---|---|
YYYY |
4자리 연도 | 2026 |
yy |
2자리 연도 | 26 |
MM |
2자리 월 | 07 |
m |
1~2자리 월 | 7 |
DD |
2자리 일 | 13 |
d |
1~2자리 일 | 13 |
hh |
2자리 시 | 09 |
mm |
2자리 분 | 05 |
ss |
2자리 초 | 07 |
W |
lang 기준 요일 |
월, Mon |
W-ko |
한국어 요일 | 월 |
W-en |
영어 요일 | Mon |
시간 포맷
현재 인스턴스 시간 표시
const date = new DateFormat('2026-07-13T09:05:07');
console.log(date.getTime()); // 09:05:07
console.log(date.getTime(null, false)); // 09:05
시간 문자열 변환
const date = new DateFormat();
console.log(date.getTime('090507')); // 09:05:07
console.log(date.getTime('0905')); // 09:05:00
console.log(date.getTime('090507', false)); // 09:05
getTime(value, includeSeconds)는
HHmmss 또는 HHmm 문자열을
HH:mm:ss 또는 HH:mm으로 변환합니다.
| 인자 | 기본값 | 설명 |
|---|---|---|
value |
없음 | 변환할 시간 문자열입니다. 없으면 인스턴스의 시간을 사용합니다. |
includeSeconds |
true |
초를 포함할지 여부입니다. |
날짜 계산
일 단위 이동
const date = new DateFormat('2026-07-13');
console.log(date.getShiftedDate(1, '2026-07-13', '-')); // 2026-07-14
console.log(date.getShiftedDate(-7, '2026-07-13', '-')); // 2026-07-06
getShiftedDate(offset, dateStr, gubun)은 기준일에서
offset일만큼 이동한 날짜를 반환합니다.
| 인자 | 기본값 | 설명 |
|---|---|---|
offset |
0 |
이동할 일 수입니다. 음수도 사용할 수 있습니다. |
dateStr |
null |
기준일입니다. 없으면 인스턴스의 날짜를 사용합니다. |
gubun |
빈 문자열 | 반환값의 날짜 구분자입니다. |
⚠️ 주의
dateStr을 생략하면 인스턴스 내부 Date 객체가 직접
변경됩니다. 같은 인스턴스를 계속 사용할 때는 필요한 경우 새
인스턴스를 생성합니다.
월 단위 이동
const date = new DateFormat('2026-07-13');
console.log(date.getAddMonths(1)); // 2026-08-13
console.log(date.getAddMonths(1, 'last')); // 2026-09-30
getAddMonths(month, mode, dateStr, gubun)은 인스턴스
기준일에서 month개월 이동한 날짜를 반환합니다.
| 인자 | 기본값 | 설명 |
|---|---|---|
month |
0 |
이동할 개월 수입니다. 음수도 사용할 수 있습니다. |
mode |
same |
same이면 같은 일자, last이면
계산된 월의 말일을 반환합니다.
|
dateStr |
null |
코드에 인자는 있지만 현재 구현에서는 사용되지 않습니다. |
gubun |
- |
반환값의 날짜 구분자입니다. |
⚠️ 주의
getAddMonths()는 인스턴스 내부 Date 객체를 직접
변경합니다. 여러 월 계산을 독립적으로 해야 하면 계산마다 새
DateFormat 인스턴스를 만듭니다.
const nextMonth = new DateFormat('2026-07-13').getAddMonths(1);
const twoMonthsLater = new DateFormat('2026-07-13').getAddMonths(2);
날짜 차이
const date = new DateFormat('2026-07-13');
console.log(date.getDateDiff('2026-07-10')); // 3
getDateDiff(other)는 인스턴스 날짜에서
other를 뺀 일 수를 반환합니다.
⚠️ 주의
getDateDiff(other, base)의 두 번째 인자인
base를 전달하면 현재 구현에서 오류가 발생할 수
있습니다. 안정 사용 기준에서는 base 인자를 사용하지
않습니다.
요일 표시
const date = new DateFormat('2026-07-13');
console.log(date.dayOfWeek(false, 'ko')); // 월
console.log(date.dayOfWeek(false, 'en')); // Mon
console.log(date.dayOfWeek('2026-07-14', 'ko')); // 화
dayOfWeek(dateStr, lang)은 지정한 날짜의 요일을
반환합니다. dateStr이 없으면 인스턴스 날짜를
사용합니다.
lang |
반환 예시 |
|---|---|
ko |
일, 월, 화, 수, 목, 금, 토 |
en 또는 그 외 값 |
Sun, Mon, Tue, Wed, Thu, Fri, Sat |
Date 객체와 문자열 변환
Date 객체 반환
const date = new DateFormat('2026-07-13');
const rawDate = date.toDate();
console.log(rawDate instanceof Date); // true
toDate()는 내부 Date 객체를 반환합니다.
ISO 문자열 반환
const date = new DateFormat('2026-07-13T09:05:07');
console.log(date.toString());
toString()은 내부 Date 객체의
toISOString() 결과를 반환합니다.
Date 객체 여부 확인
console.log(DateFormat.isDate(new Date())); // true
console.log(DateFormat.isDate('2026-07-13')); // false
DateFormat.isDate(value)는 값이 Date 객체인지
확인합니다.
통합 예제
아래 예제는 오늘 날짜, 요일, 현재 시간, 7일 뒤 날짜를 화면에 표시합니다.
HTML
<p>오늘: <span id="todayText"></span></p>
<p>요일: <span id="weekText"></span></p>
<p>현재 시간: <span id="timeText"></span></p>
<p>7일 뒤: <span id="afterSevenDaysText"></span></p>
<script type="module" src="/js/date-page.js"></script>
JavaScript
import DateFormat from '/path/to/dateUtils.js';
const todayText = document.getElementById('todayText');
const weekText = document.getElementById('weekText');
const timeText = document.getElementById('timeText');
const afterSevenDaysText = document.getElementById('afterSevenDaysText');
if (!todayText || !weekText || !timeText || !afterSevenDaysText) {
throw new Error('날짜 표시 요소를 찾을 수 없습니다.');
}
const now = new DateFormat();
todayText.textContent = now.format('YYYY-MM-DD');
weekText.textContent = now.dayOfWeek(false, 'ko');
timeText.textContent = now.getTime(null, false);
afterSevenDaysText.textContent = new DateFormat().getShiftedDate(7, null, '-');
실행 데모
LIVE DEMO기준일을 바꾸면 포맷, 요일, 날짜 계산 결과가 즉시 갱신됩니다. 현재 시간은 1초마다 업데이트됩니다.
- 날짜 포맷
- - format('YYYY-MM-DD')
- 요일
- - dayOfWeek(false, lang)
- 현재 시간
- - getTime(null, false)
- 7일 뒤
- - getShiftedDate(7, null, '-')
문제 해결
날짜 파싱 실패 오류가 발생합니다.
DateFormat은 new Date(value)로 파싱할 수
없는 값이면 오류를 발생시킵니다.
new DateFormat('잘못된 날짜'); // Error: 날짜 파싱 실패
다음 형식을 우선 사용합니다.
YYYY-MM-DDYYYY-MM-DDTHH:mm:ssYYYYMMDDDate객체
formatYmd() 결과가 빈 문자열입니다.
formatYmd()는 인자 value가 없으면 빈
문자열을 반환합니다.
const date = new DateFormat('2026-07-13');
console.log(date.formatYmd()); // ''
console.log(date.format()); // 2026-07-13
인스턴스 날짜를 출력하려면 format()을 사용합니다.
월 계산 결과가 예상과 다릅니다.
getAddMonths()는 호출할 때마다 인스턴스 내부 Date
객체를 변경합니다. 같은 기준일로 여러 계산을 해야 하면 새 인스턴스를
사용합니다.
const oneMonth = new DateFormat('2026-07-13').getAddMonths(1);
const twoMonths = new DateFormat('2026-07-13').getAddMonths(2);
getDateDiff() 사용 시 주의사항
안정 사용 기준에서는 두 번째 base 인자를 사용하지 않는
것을 권장합니다.
const date = new DateFormat('2026-07-13');
console.log(date.getDateDiff('2026-07-10'));
UTC 기준 날짜를 확인하십시오.
toString()은
Date.prototype.toISOString()을 사용하므로 UTC 기준
문자열을 반환합니다. 화면 표시용 날짜는 format()을
사용합니다.
API 요약
주요 생성 방식
| 방식 | 설명 |
|---|---|
new DateFormat(value?) |
날짜 유틸 인스턴스를 생성합니다. |
DateFormat.of(value) |
new DateFormat(value)와 같은 방식으로
인스턴스를 생성합니다.
|
주요 정적 메서드
| 메서드 | 설명 |
|---|---|
DateFormat.of(value) |
새 DateFormat 인스턴스를 반환합니다. |
DateFormat.isDate(value) |
값이 Date 객체인지 확인합니다. |
주요 인스턴스 메서드
| 메서드 | 설명 |
|---|---|
formatYmd(value, gubun) |
날짜를 YYYYMMDD 또는 구분자 포함 형식으로
반환합니다.
|
format(formatString, lang) |
지정한 토큰 형식으로 날짜·시간 문자열을 반환합니다. |
getTime(value, includeSeconds) |
시간을 HH:mm:ss 또는 HH:mm으로
반환합니다.
|
getShiftedDate(offset, dateStr, gubun) |
기준일에서 n일 이동한 날짜를 반환합니다. |
getAddMonths(month, mode, dateStr, gubun)
|
기준일에서 n개월 이동한 날짜를 반환합니다. |
getDateDiff(other) |
인스턴스 날짜와 비교 날짜의 일 차이를 반환합니다. |
dayOfWeek(dateStr, lang) |
요일 문자열을 반환합니다. |
toDate() |
내부 Date 객체를 반환합니다. |
toString() |
내부 Date 객체의 ISO 문자열을 반환합니다. |
© team coForward