formatdate 함수
formatdate 함수
formatdate는 타임스탬프를 다른 시간 포맷으로 변환해요.
formatdate(spec, timestamp)
Packer에서 타임스탬프는 관례적으로 RFC 3339 "Date and Time format" 문법을 사용하는 문자열로 표현돼요. formatdate는 timestamp 인자가 이 문법을 따르는 문자열일 것을 요구해요.
출처: Packer 공식 문서
본문
예시 (Examples)
> formatdate("DD MMM YYYY hh:mm ZZZ", "2018-01-02T23:12:01Z")
02 Jan 2018 23:12 UTC
> formatdate("EEEE, DD-MMM-YY hh:mm:ss ZZZ", "2018-01-02T23:12:01Z")
Tuesday, 02-Jan-18 23:12:01 UTC
> formatdate("EEE, DD MMM YYYY hh:mm:ss ZZZ", "2018-01-02T23:12:01-08:00")
Tue, 02 Jan 2018 23:12:01 -0800
> formatdate("MMM DD, YYYY", "2018-01-02T23:12:01Z")
Jan 02, 2018
> formatdate("HH:mmaa", "2018-01-02T23:12:01Z")
11:12pm
명세 문법 (Specification Syntax)
포맷 명세는 아래 표의 포맷 시퀀스를 포함하는 문자열이에요. 이 함수는 RFC822, RFC850, RFC1123에 정의된 것 같은 흔한 머신 지향 타임스탬프 포맷을 만드는 용도예요. 로케일을 인식하지 않기 때문에 진정한 사람 지향 날짜 포맷에는 적합하지 않아요. 특히 월과 요일 이름을 영어로만 만들 수 있어요.
명세는 다음 시퀀스를 포함할 수 있어요.
| 시퀀스 | 결과 |
|---|---|
YYYY |
네 자리(또는 그 이상) 연도. 예: "2006" |
YY |
연도를 100으로 나눈 나머지, 최소 두 자리로 0 패딩. 예: "06" |
MMMM |
축약되지 않은 영어 월 이름. 예: "January" |
MMM |
세 글자로 축약된 영어 월 이름. 예: "Jan" |
MM |
두 자리로 0 패딩된 월 번호. 예: 1월은 "01" |
M |
패딩 없는 월 번호. 예: 1월은 "1" |
DD |
두 자리로 0 패딩된 날 번호. 예: "02" |
D |
패딩 없는 날 번호. 예: "2" |
EEEE |
축약되지 않은 영어 요일 이름. 예: "Monday" |
EEE |
세 글자로 축약된 영어 요일 이름. 예: "Mon" |
hh |
두 자리로 0 패딩된 24시간제 숫자. 예: "02" |
h |
패딩 없는 24시간제 숫자. 예: "2" |
HH |
두 자리로 0 패딩된 12시간제 숫자. 예: "02" |
H |
패딩 없는 12시간제 숫자. 예: "2" |
AA |
대문자 AM/PM 표시. 예: "AM" |
aa |
소문자 AM/PM 표시. 예: "am" |
mm |
두 자리로 0 패딩된 시간 내 분. 예: "05" |
m |
패딩 없는 시간 내 분. 예: "5" |
ss |
두 자리로 0 패딩된 분 내 초. 예: "09" |
s |
분 내 초. 예: "9" |
ZZZZZ |
시와 분을 콜론으로 구분한 시간대 오프셋. 예: "-08:00" |
ZZZZ |
부호와 숫자만 있는 시간대 오프셋. 예: "-0800" |
ZZZ |
ZZZZ와 같지만 UTC를 "UTC"라는 특수 케이스로 처리 |
Z |
ZZZZZ와 같지만 UTC를 "Z"라는 특수 케이스로 처리 |
구두점 같은 비문자(non-letter) 문자는 출력에 그대로 재현돼요. 포맷 문자열에 리터럴 문자를 포함하려면 작은따옴표 '로 감싸세요. 리터럴 따옴표를 포함하려면 따옴표를 두 번 입력해 이스케이프하세요.
> formatdate("h'h'mm", "2018-01-02T23:12:01-08:00")
23h12
> formatdate("H 'o''clock'", "2018-01-02T23:12:01-08:00")
11 o'clock
이 포맷 명세 문법은 독자가 문법 전문가가 아니어도 어떤 포맷이 나올지 쉽게 짐작할 수 있게 하려는 의도예요. 그래서 흔한 포맷에 대한 미리 정의된 축약형은 없지만, 다양한 RFC 명세 포맷의 포맷 문자열은 필요할 때 설정에 복사해 쓰도록 아래에 제공해요.
- RFC 822 및 RFC 2822:
"DD MMM YYYY hh:mm ZZZ" - RFC 850:
"EEEE, DD-MMM-YY hh:mm:ss ZZZ" - RFC 1123:
"EEE, DD MMM YYYY hh:mm:ss ZZZ" - RFC 3339:
"YYYY-MM-DD'T'hh:mm:ssZ"(하지만 이것은 입력 포맷이기도 해서, 이런 변환은 중복돼요.)
관련 함수 (Related Functions)
format은 임의 데이터에 대한 더 일반적인 포맷팅 함수예요.timestamp는formatdate입력에 적합한 포맷으로 현재 날짜와 시간을 반환해요.