티스토리 뷰
자바스크립트로 문자열을 날짜 형식으로 변환하는 specialFormatDate 함수 만들기
Coding Life 2024. 12. 10. 13:12자바스크립트로 문자열을 날짜 형식으로 변환하는 specialFormatDate 함수 만들기
프로그래밍을 하다 보면 문자열에서 특정 패턴을 제거하고 원하는 형식으로 데이터를 변환해야 하는 경우가 많습니다. 이번 포스팅에서는 입력받은 문자열에서 24라는 고정 값을 제거한 후, 나머지 숫자를 MM-DD(월-일) 형식으로 변환하는 자바스크립트 함수, specialFormatDate를 만드는 과정을 살펴보겠습니다.
목표
입력
- 문자열이 24로 시작합니다. 예를 들어, 2412101123과 같은 형식입니다.
- 우리는 24를 제거하고 나머지 숫자 중 첫 두 자리는 월(MM), 그다음 두 자리는 일(DD)로 변환합니다.
출력
- 변환된 결과는 12-10처럼 월-일 형식으로 출력됩니다.
- 유효하지 않은 입력값에 대해서는 X를 반환합니다.
specialFormatDate 함수 구현
아래는 specialFormatDate 함수의 코드입니다.
function specialFormatDate(inputString) {
// 입력 값이 유효한지 확인
if (!inputString || inputString.length < 4) {
return 'X'; // 유효하지 않은 값 처리
}
// '24' 제거 및 'MM-DD' 형식으로 변환
const formattedString = inputString.replace(/^24/, ''); // 문자열이 '24'로 시작하면 제거
const month = formattedString.slice(0, 2); // 앞의 2자리: 월
const day = formattedString.slice(2, 4); // 그다음 2자리: 일
// 유효한 월, 일인지 확인
if (isNaN(month) || isNaN(day) || month < 1 || month > 12 || day < 1 || day > 31) {
return 'X'; // 유효하지 않은 날짜 값 처리
}
return `${month}-${day}`; // MM-DD 형식 반환
}
코드 설명
1. 입력 유효성 검사
if (!inputString || inputString.length < 4) {
return 'X';
}
- inputString이 null, undefined, 또는 길이가 4 미만이면 유효하지 않은 입력으로 간주하고 X를 반환합니다.
2. 24 제거
const formattedString = inputString.replace(/^24/, '');
- replace 메서드를 사용하여 문자열이 24로 시작하면 제거합니다.
- 예를 들어, 241210은 1210으로 변환됩니다.
3. 월(MM)과 일(DD) 추출
const month = formattedString.slice(0, 2); // 첫 두 자리: 월
const day = formattedString.slice(2, 4); // 다음 두 자리: 일
- slice 메서드를 사용해 문자열의 앞 두 자리를 월, 다음 두 자리를 일로 나눕니다.
4. 유효성 검사
if (isNaN(month) || isNaN(day) || month < 1 || month > 12 || day < 1 || day > 31) {
return 'X';
}
- 월과 일이 숫자인지 확인하고, 범위가 유효한지(1
12, 131) 검사합니다. - 유효하지 않다면 X를 반환합니다.
5. 결과 반환
return `${month}-${day}`;
- 유효한 값이라면 MM-DD 형식으로 반환합니다.
사용 예제
아래는 다양한 입력값에 대해 specialFormatDate 함수가 어떻게 작동하는지 보여줍니다.
정상적인 입력
console.log(specialFormatDate('2412101123')); // "12-10"
console.log(specialFormatDate('241101')); // "11-01"
유효하지 않은 입력
console.log(specialFormatDate('123')); // "X" (길이가 4 미만)
console.log(specialFormatDate('240045')); // "X" (유효하지 않은 월/일)
console.log(specialFormatDate(null)); // "X" (null 처리)
자바스크립트로 문자열을 날짜 형식으로 변환하기: specialFormatDate 함수
실무에서 데이터를 처리하다 보면 문자열에서 특정 패턴을 제거하거나, 원하는 형식으로 데이터를 변환해야 할 때가 많습니다. 이번 포스팅에서는 고정된 문자열 패턴(24)을 제거하고, 남은 숫자를 MM-DD(월-일) 형식으로 변환하는 specialFormatDate 함수를 구현해 보겠습니다.
이 포스팅은 중급 개발자를 대상으로 작성되었으며, 함수 설계와 유효성 검사를 어떻게 효율적으로 처리할지에 초점을 맞췄습니다.
요구사항 분석
입력
- 문자열은 24로 시작합니다. 예: 2412101123.
- 24를 제거하고, 그다음 숫자 중 첫 2자리를 MM, 그다음 2자리를 DD로 변환합니다.
출력
- 변환된 결과는 12-10과 같은 MM-DD 형식으로 반환됩니다.
- 유효하지 않은 입력값은 X를 반환합니다.
함수 설계
이 함수는 다음 단계를 거쳐 구현됩니다:
- 입력값 유효성 검사:
- 문자열이 제공되었는지 확인.
- 문자열의 길이가 충분히 긴지 검사.
- 24 제거:
- 정규식을 사용해 문자열의 시작 부분에서 24 제거.
- 월과 일 추출:
- 남은 문자열에서 앞 2자리를 MM으로, 그다음 2자리를 DD로 추출.
- 유효성 검사:
- 월(MM)은 1
12, 일(DD)은 131 범위인지 확인.
- 월(MM)은 1
- 출력 포맷:
- 유효하다면 MM-DD 형식 반환.
- 유효하지 않다면 X 반환.
코드 구현
아래는 요구사항을 만족하는 specialFormatDate 함수입니다.
function specialFormatDate(inputString) {
// 1. 입력값 유효성 검사
if (!inputString || inputString.length < 4) {
return 'X'; // 유효하지 않은 값
}
// 2. '24' 제거
const formattedString = inputString.replace(/^24/, ''); // '24'로 시작하면 제거
// 3. 월(MM)과 일(DD) 추출
const month = formattedString.slice(0, 2); // 앞 2자리: 월
const day = formattedString.slice(2, 4); // 그다음 2자리: 일
// 4. 유효성 검사
if (
isNaN(month) || isNaN(day) || // 숫자인지 확인
month < 1 || month > 12 || // 월 범위: 1~12
day < 1 || day > 31 // 일 범위: 1~31
) {
return 'X'; // 유효하지 않은 날짜
}
// 5. 결과 반환 (MM-DD 형식)
return `${month}-${day}`;
}
주요 포인트
정규식을 활용한 24 제거
const formattedString = inputString.replace(/^24/, '');
- 정규식 ^24는 문자열의 시작 부분이 24로 시작하면 이를 찾아 제거합니다.
- 이 방식은 가독성이 좋고, 문자열이 길더라도 빠르게 처리됩니다.
slice를 사용한 문자열 분리
const month = formattedString.slice(0, 2);
const day = formattedString.slice(2, 4);
- slice 메서드를 사용해 지정된 위치의 부분 문자열을 추출합니다.
- 월과 일을 각각 추출하여 직관적으로 코드의 의도를 표현합니다.
유효성 검사
if (
isNaN(month) || isNaN(day) ||
month < 1 || month > 12 ||
day < 1 || day > 31
) {
return 'X';
}
- 숫자인지 확인: isNaN을 사용.
- 월과 일의 범위가 유효한지 조건문으로 검사.
사용 예제
정상적인 입력값
console.log(specialFormatDate('2412101123')); // "12-10"
console.log(specialFormatDate('241101')); // "11-01"
유효하지 않은 입력값
console.log(specialFormatDate('123')); // "X" (길이가 4 미만)
console.log(specialFormatDate('240045')); // "X" (유효하지 않은 월/일)
console.log(specialFormatDate(null)); // "X" (null 처리)
성능 최적화
- 정규식 활용:
- replace(/^24/, '')는 문자열의 시작만 검사하므로 빠르게 동작합니다.
- 유효성 검사:
- 월과 일의 범위가 제한적이므로, 빠르게 검사할 수 있는 조건문을 사용했습니다.
- 단일 책임 원칙:
- 함수가 단순히 문자열을 변환하는 데만 집중하도록 설계되었습니다.
결론
이 코드 예제는 입력 문자열에서 고정된 패턴(24)을 제거하고, 남은 숫자를 날짜 형식으로 변환하는 과정을 잘 보여줍니다. 간단한 유효성 검사를 추가해 예외 상황을 처리하고, 출력 형식을 깔끔하게 유지했습니다.
여러분도 이 코드를 참고하여 다른 데이터 변환 작업에 활용해 보세요! 필요한 경우, 여러분만의 확장된 로직으로 응용할 수도 있습니다. 😊
'IT tech Coding > javascript' 카테고리의 다른 글
- Total
- Today
- Yesterday
- sql문장 날짜계산
- 프로그래머생활
- 효율적코딩방법
- #InstallForge
- ajax오류메시지
- 뫄프로그래밍
- coalesce는 한국어로 "코얼레스크" 또는 "코얼리스"
- #프로그램설치
- 스크립트작성기초
- 엑셀보호
- chatGPT3.5파이썬버전
- #파이썬패키징
- 코딩튜토리얼
- 티스토리챌린지
- 오블완
- isset을 적용해야 하는 이유
- Bootstrap 5
- json파일형태보기
- #NSIS
- 코딩효율성
- json파일편하게보는법
- 엑셀입력보호
- 파이썬코드줄바꿈방법
- 테크에능한여성
- General error: 2031
- 구글드라이브API
- #독립실행파일
- #InnoSetup
- 오토핫키가이드
- 엑셀셀보호
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |