Linux

[ Linux ] 사용자 입력 값을 RFC 2822 형식으로 변환하는 방법 - Shell script

soyali 2025. 6. 13. 14:45

최근 API 작업 중, 날짜 값을 RFC 2822 형식으로 변환해 전달해야 할 일이 있었습니다.
RFC 2822는 이메일 메시지의 형식을 정의한 인터넷 표준 문서이지만, 사용자가 직접 입력하기에는 다소 까다로운 부분이 있어 변환 방법을 찾아보고 정리하게 되었습니다.

 

 

 

- RFC 2822 정의

  • RFC 2822는 이메일 메시지의 형식을 정의한 인터넷 표준 문서입니다.
  • 제목: Internet Message Format
  • 작성자: Internet Engineering Task Force (IETF)
  • 주요 목적: 이메일 헤더 구조, 날짜 포맷, 주소 포맷 등 메시지 형식을 통일

 

RFC란?
Request For Comments – 인터넷 표준 문서를 정의한 문서 시리즈입니다.

 

 

RFC 2822 날짜 포맷 예시

Tue, 14 May 2024 13:55:30 +0900

형식의 구성 요소 : 

요일, 일 월 연도 시:분:초 시간대

 

 

Shell script

#!/bin/bash 


# 입력받은 날짜 (YYYYMMddhhmmss 형식)
input_datetime=$1

# 유효성 검사 함수
validate_format() {
    if [[ ! "$1" =~ ^[0-9]{14}$ ]]; then
       echo "형식 오류: 입력한 날짜가 YYYYMMddhhmmss 형식이 아닙니다."
       exit 1
    fi
}

# RFC 2822 형식으로 변환 함수
convert_to_rfc2822() {
   datetime="$1"

   YYYY="${datetime:0:4}"
   MM="${datetime:4:2}"
   dd="${datetime:6:2}"
   hh="${datetime:8:2}"
   mm="${datetime:10:2}"
   ss="${datetime:12:2}"

   formatted_datetime="${YYYY}-${MM}-${dd} ${hh}:${mm}:${ss}"

   # Asia/Seoul 타임존 기준으로 변환 후 출력
   TZ=Asia/Seoul date -d "$formatted_datetime" '+%a, %d %b %Y %H:%M:%S %z'
}


# 입력값 유효성 검사
validate_format "$input_datetime"

# 변환된 RFC 2822 문자열
rfc2822_datetime=$(convert_to_rfc2822 "$input_datetime")

echo "$rfc2822_datetime"

 

입력 : 

202506121600

변환 출력 :

Thu, 12 Jun 2025 16:00:00 +0900