최근 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
'Linux' 카테고리의 다른 글
| [ Linux ] su, su -, sudo 차이점 정리 (운영 서버 기준) (0) | 2026.01.28 |
|---|---|
| [ Linux ] curl GET 요청 시 URL 인코딩이 꼭 필요한 이유와 처리 방법 (0) | 2025.06.13 |
| [ Linux ] curl로 REST API 호출하는 방법 (0) | 2025.06.13 |
| [ Linux ] 리눅스에서 API 호출을 할 때 curl이 거의 표준처럼 사용되는 이유 (1) | 2025.06.13 |
| [ Linux ] man 명령어 - 섹션, 검색, 키워드 활용법 (2) | 2025.06.02 |