strftime(3) - wariua/manpages-ko GitHub Wiki

NAME

strftime - λ‚ μ§œ 및 μ‹œκ°„ μ„œμ‹ν™”

SYNOPSIS

#include <time.h>

size_t strftime(char *s, size_t max, const char *format,
                const struct tm *tm);

DESCRIPTION

strftime() ν•¨μˆ˜λŠ” λΆ„ν•  μ‹œκ°„ tm을 μ„œμ‹ format에 따라 λ³€ν™˜ν•΄μ„œ κ·Έ κ²°κ³Όλ₯Ό 크기 max인 문자 λ°°μ—΄ s에 μ§‘μ–΄λ„£λŠ”λ‹€. λΆ„ν•  μ‹œκ°„ ꡬ쑰체 tm은 <time.h>에 μ •μ˜λΌ μžˆλ‹€. ctime(3)도 μ°Έκ³ .

μ„œμ‹μ€ 널 μ’…λ£Œ λ¬Έμžμ—΄μ΄λ©° λ³€ν™˜ μ§€μ •μžλΌλŠ” νŠΉλ³„ν•œ 문자 열을 포함할 수 μžˆλ‹€. 각 λ³€ν™˜ μ§€μ •μžλŠ” '%' 문자둜 μ‹œμž‘ν•΄μ„œ λ³€ν™˜ μ§€μ • λ¬ΈμžλΌλŠ” μ–΄λ–€ λ‹€λ₯Έ 문자둜 λλ‚œλ‹€. κ·Έ μ™Έμ˜ λͺ¨λ“  문자 열은 일반 문자 열이닀.

일반 문자 μ—΄μ˜ λ¬Έμžλ“€(널 λ°”μ΄νŠΈ 포함)은 formatμ—μ„œ s둜 κ·ΈλŒ€λ‘œ λ³΅μ‚¬ν•œλ‹€. ν•˜μ§€λ§Œ λ³€ν™˜ μ§€μ •μžμ˜ λ¬Έμžλ“€μ€ μ•„λž˜ λͺ©λ‘μ— λ‚˜μ˜¨ λŒ€λ‘œ λ°”κΏ”μ„œ λ„£λŠ”λ‹€. 이 λͺ©λ‘μ—λŠ” tm ꡬ쑰체의 이용 ν•„λ“œ(λ“€)도 μ ν˜€ μžˆλ‹€.

%a ν˜„μž¬ λ‘œμΊ˜μ— λ”°λ₯Έ μš”μΌ μΆ•μ•½ 이름. (tm_wday둜 계산)
%A ν˜„μž¬ λ‘œμΊ˜μ— λ”°λ₯Έ μš”μΌ μ›λž˜ 이름. (tm_wday둜 계산)
%b ν˜„μž¬ λ‘œμΊ˜μ— λ”°λ₯Έ μ›” μΆ•μ•½ 이름. (tm_mon으둜 계산)
%B ν˜„μž¬ λ‘œμΊ˜μ— λ”°λ₯Έ μ›” μ›λž˜ 이름. (tm_mon으둜 계산)
%c ν˜„μž¬ λ‘œμΊ˜μ—μ„œ 많이 μ“°λŠ” λ‚ μ§œ 및 μ‹œκ°„ ν‘œν˜„.
%C 2자리 μ •μˆ˜λ‘œ 된 μ„ΈκΈ° 번호 (λ…„/100). (SU) (tm_year둜 계산)
%d μ‹­μ§„μˆ˜λ‘œ 된 μ›” 쀑 λ‚ μ§œ. (01μ—μ„œ 31κΉŒμ§€) (tm_mday둜 계산)
%D %m/%d/%y와 κ°™μŒ. (윽... λ―Έκ΅­ μ „μš©. λ‹€λ₯Έ λ‚˜λΌμ—μ„œλŠ” %d/%m/%yκ°€ κ½€ ν”ν•˜λ‹€λŠ” κ±Έ 미ꡭ인듀은 μ•Œμ•„ λ‘˜ ν•„μš”κ°€ μžˆλ‹€. 즉 ꡭ제적인 λ§₯λ½μ—μ„œ 이 ν˜•μ‹μ€ λͺ…ν™•ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ μ“°μ§€ μ•ŠλŠ” 게 μ’‹λ‹€.) (SU)
%e %d처럼 μ‹­μ§„μˆ˜λ‘œ 된 μ›” 쀑 λ‚ μ§œμ΄λ˜, μ•žμ˜ 0을 곡백으둜 λ°”κΎΌ 것. (SU) (tm_mday둜 계산)
%E μˆ˜μ‹μž: λ‹€λ₯Έ ν˜•μ‹ μ‚¬μš©. μ•„λž˜ μ°Έκ³ . (SU)
%F %Y-%m-%d와 κ°™μŒ. (ISO 8601 λ‚ μ§œ ν˜•μ‹) (C99)
%G ISO 8601 μ£Ό κΈ°μ€€μ˜ μ„ΈκΈ° ν¬ν•¨ν•œ μ‹­μ§„μˆ˜λ‘œ 된 연도. (NOTES μ°Έκ³ .) 4자리 연도가 ISO μ£Ό 번호(%V μ°Έκ³ )에 λΆ€ν•©ν•œλ‹€. κ·Έλž˜μ„œ %Y와 ν˜•μ‹ 및 값이 κ°™λ˜ ISO μ£Ό λ²ˆν˜Έκ°€ μ§€λ‚œν•΄λ‚˜ λ‹€μŒν•΄μ— μ†ν•˜λ©΄ κ·Έ 연도λ₯Ό μ“΄λ‹€. (TZ) (tm_year, tm_yday, tm_wday둜 계산)
%g %G와 κ°™λ˜ μ„ΈκΈ° 없이. 즉 2자리 연도. (00-99) (TZ) (tm_year, tm_yday, tm_wday둜 계산)
%h %b와 κ°™μŒ. (SU)
%H μ‹­μ§„μˆ˜λ‘œ 된 24μ‹œκ°„ μ‹œκ³„ μ‹œκ°„. (00μ—μ„œ 23κΉŒμ§€) (tm_hour둜 계산)
%I μ‹ μ§„μˆ˜λ‘œ 된 12μ‹œκ°„ μ‹œκ³„ μ‹œκ°„. (01μ—μ„œ 12κΉŒμ§€) (tm_hour둜 계산)
%j μ‹­μ§„μˆ˜λ‘œ 된 μ—° 쀑 λ‚ μ§œ. (001μ—μ„œ 366κΉŒμ§€) (tm_yday둜 계산)
%k μ‹­μ§„μˆ˜λ‘œ 된 (24μ‹œκ°„ μ‹œκ³„) μ‹œκ°„. (0μ—μ„œ 23κΉŒμ§€) 1자리 수 μ•žμ—λŠ” 곡백이 λΆ™μŒ. (%H μ°Έκ³ .) (tm_hour둜 계산) (TZ)
%l μ‹­μ§„μˆ˜λ‘œ 된 (12μ‹œκ°„ μ‹œκ³„) μ‹œκ°„. (1μ—μ„œ 12κΉŒμ§€) 1자리 수 μ•žμ—λŠ” 곡백이 λΆ™μŒ. (^I μ°Έκ³ .) (tm_hour둜 계산) (TZ)
%m μ‹­μ§„μˆ˜λ‘œ 된 μ›”. (01μ—μ„œ 12κΉŒμ§€) (tm_mon으둜 계산)
%M μ‹­μ§„μˆ˜λ‘œ 된 λΆ„. (00μ—μ„œ 59κΉŒμ§€) (tm_min으둜 계산)
%n κ°œν–‰ 문자. (SU)
%O μˆ˜μ‹μž: λ‹€λ₯Έ ν˜•μ‹ μ‚¬μš©. μ•„λž˜ μ°Έκ³ . (SU)
%p ν•΄λ‹Ή μ‹œκ°„ 값에 따라 "AM"μ΄λ‚˜ "PM", λ˜λŠ” ν˜„μž¬ 둜캘의 ν•΄λ‹Ή λ¬Έμžμ—΄. μ •μ˜€λŠ” "PM"으둜 μ·¨κΈ‰ν•˜κ³  μžμ •μ€ "AM"으둜 μ·¨κΈ‰ν•œλ‹€. (tm_hour둜 계산)
%P %p와 κ°™λ˜ μ†Œλ¬Έμž. 즉 "am"μ΄λ‚˜ "pm", λ˜λŠ” ν˜„μž¬ 둜캘의 ν•΄λ‹Ή λ¬Έμžμ—΄. (tm_hour둜 계산) (GNU)
%r μ˜€μ „ μ˜€ν›„λ₯Ό ν‘œκΈ°ν•œ μ‹œκ°„. POSIX λ‘œμΊ˜μ—μ„œλŠ” %I:%M:%S %p와 κ°™λ‹€. (SU)
%R 24μ‹œκ°„ ν‘œκΈ°λ²•μœΌλ‘œ 된 μ‹œκ°„ (%H:%M). (SU) 초λ₯Ό ν¬ν•¨ν•œ 버전은 μ•„λž˜ %Tλ₯Ό 보라.
%s 에포크 1970-01-01 00:00:00 +0000 (UTC) μ΄ν›„μ˜ 초 수. (TZ) (mktime(tm)으둜 계산)
%S μ‹­μ§„μˆ˜λ‘œ 된 초. (00μ—μ„œ 60κΉŒμ§€) (가끔 μžˆλŠ” 윀초λ₯Ό μœ„ν•΄ λ²”μœ„κ°€ 60κΉŒμ§€μž„.) (tm_sec으둜 계산)
%t νƒ­ 문자. (SU)
%T 24μ‹œκ°„ ν‘œκΈ°λ²•μœΌλ‘œ 된 μ‹œκ°„ (%H:%M:%S). (SU)
%u μ‹­μ§„μˆ˜λ‘œ 된 μ£Ό 쀑 λ‚  번호. 1μ—μ„œ 7κΉŒμ§€μ΄λ©° μ›”μš”μΌμ΄ 1. %w μ°Έκ³ . (tm_wday둜 계산) (SU)
%U μ‹­μ§„μˆ˜λ‘œ 된 λ‹Ήν•΄ 쀑 μ£Ό 번호. 00μ—μ„œ 53κΉŒμ§€μ΄λ©°, 첫 번째 μΌμš”μΌμ„ 01번 μ£Ό μ²«λ‚ λ‘œ μ‚ΌλŠ”λ‹€. %V와 %W도 μ°Έκ³ . (tm_yday와 tm_wday둜 계산)
%V μ‹­μ§„μˆ˜λ‘œ 된 ISO 8601 방식 λ‹Ήν•΄ 쀑 μ£Ό 번호. (μ•„λž˜ μ°Έκ³ .) 01μ—μ„œ 53κΉŒμ§€μ΄λ©°, μ΅œμ†Œ 4일이 μƒˆν•΄μ— μžˆλŠ” 첫 번째 μ£Όκ°€ 1번 주이닀. %U와 %W도 μ°Έκ³ . (tm_year, tm_yday, tm_wday둜 계산) (SU)
%w μ‹­μ§„μˆ˜λ‘œ 된 μ£Ό 쀑 λ‚  번호. 0μ—μ„œ 6κΉŒμ§€μ΄λ©° μΌμš”μΌμ΄ 0. %u μ°Έκ³ . (tm_wday둜 계산)
%W μ‹­μ§„μˆ˜λ‘œ 된 λ‹Ήν•΄ 쀑 μ£Ό 번호. 00μ—μ„œ 53κΉŒμ§€μ΄λ©°, 첫 번째 μ›”μš”μΌμ„ 01번 μ£Ό μ²«λ‚ λ‘œ μ‚ΌλŠ”λ‹€. (tm_yday와 tm_wday둜 계산)
%x ν˜„μž¬ λ‘œμΊ˜μ—μ„œ 많이 μ“°λŠ” μ‹œκ°„ μ—†λŠ” λ‚ μ§œ ν‘œν˜„.
%X ν˜„μž¬ λ‘œμΊ˜μ—μ„œ 많이 μ“°λŠ” λ‚ μ§œ μ—†λŠ” μ‹œκ°„ ν‘œν˜„.
%y μ„ΈκΈ° 없이 μ‹­μ§„μˆ˜λ‘œ 된 연도. (00μ—μ„œ 99κΉŒμ§€) (tm_year둜 계산)
%Y μ„ΈκΈ° ν¬ν•¨ν•œ μ‹­μ§„μˆ˜λ‘œ 된 연도. (tm_year둜 계산)
%z +hhmm λ˜λŠ” -hhmm 숫자 ν˜•μ‹ μ‹œκ°„λŒ€ (즉 UTCμ™€μ˜ μ‹œκ°„ 및 λΆ„ 차이). (SU)
%Z μ‹œκ°„λŒ€ 이름 λ˜λŠ” μΆ•μ•½λͺ….
%+ date(1) ν˜•μ‹μ˜ λ‚ μ§œ 및 μ‹œκ°„. (TZ) (glibc2μ—μ„œ μ§€μ›ν•˜μ§€ μ•ŠμŒ.)
%% '%' 문자 자체.

λͺ‡λͺ‡ λ³€ν™˜ μ§€μ •μžλ“€μ—μ„  λ³€ν™˜ μ§€μ • 문자 μ•žμ— Eλ‚˜ O μˆ˜μ‹μžλ₯Ό λΆ™μ—¬μ„œ λŒ€μ²΄ ν˜•μ‹μ„ 써야 ν•œλ‹€κ³  ν‘œμ‹œν•  수 μžˆλ‹€. ν˜„μž¬ λ‘œμΊ˜μ—μ„œ λŒ€μ²΄ ν˜•μ‹ λ‚΄μ§€ μ§€μ •μžκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λŠ” μˆ˜μ‹ 없이 λ³€ν™˜ μ§€μ •μžλ₯Ό μ“΄ κ²ƒμ²˜λŸΌ λ™μž‘ν•˜κ²Œ λœλ‹€. (SU) 단일 μœ λ‹‰μŠ€ κ·œκ²©μ—μ„œλŠ” %Ec, %EC, %Ex, %EX, %Ey, %EY, %Od, %Oe, %OH, %OI, %Om, %OM, %OS, %Ou, %OU, %OV, %Ow, %OW, %Oyλ₯Ό μ–ΈκΈ‰ν•˜λŠ”λ°, O μˆ˜μ‹μžμ˜ νš¨κ³ΌλŠ” λŒ€μ²΄ 숫자 심볼(κ°€λ Ή 둜마 숫자)을 μ“°λŠ” 것이고 E μˆ˜μ‹μžμ˜ νš¨κ³ΌλŠ” λ‘œμΊ˜λ³„ λŒ€μ²΄ ν‘œν˜„μ„ μ“°λŠ” 것이닀.

RETURN VALUE

κ²°κ³Ό λ¬Έμžμ—΄μ΄ μ’…λ£Œ 널 λ°”μ΄νŠΈλ₯Ό ν¬ν•¨ν•΄μ„œ max λ°”μ΄νŠΈλ₯Ό μ΄ˆκ³Όν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λŠ” λ°°μ—΄ s에 집어넣은 (μ’…λ£Œ 널 λ°”μ΄νŠΈλ₯Ό λΊ€) λ°”μ΄νŠΈ 수λ₯Ό strftime()이 λ°˜ν™˜ν•œλ‹€. κ²°κ³Ό λ¬Έμžμ—΄μ˜ (μ’…λ£Œ 널 λ°”μ΄νŠΈ 포함) 길이가 max λ°”μ΄νŠΈλ₯Ό λ„˜κ²Œ 될 κ²½μš°μ—λŠ” strftime()이 0을 λ°˜ν™˜ν•˜λ©°, μ΄λ•Œ λ°°μ—΄μ˜ λ‚΄μš©λ¬Όμ€ κ·œμ •λΌ μžˆμ§€ μ•Šλ‹€.

참고둜 λ°˜ν™˜ κ°’ 0이 λ°˜λ“œμ‹œ 였λ₯˜λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 건 μ•„λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μ—¬λŸ¬ λ‘œμΊ˜μ—μ„œ %pλŠ” 빈 λ¬Έμžμ—΄μ΄ λœλ‹€. format λ¬Έμžμ—΄μ΄ λΉ„μ–΄ μžˆμ–΄λ„ λ§ˆμ°¬κ°€μ§€λ‘œ 빈 λ¬Έμžμ—΄μ΄ λ‚˜μ˜¨λ‹€.

ENVIRONMENT

ν™˜κ²½ λ³€μˆ˜ TZ 및 LC_TIME을 μ“΄λ‹€.

ATTRIBUTES

이 μ ˆμ—μ„œ μ‚¬μš©ν•˜λŠ” μš©μ–΄λ“€μ— λŒ€ν•œ μ„€λͺ…은 attributes(7)λ₯Ό 보라.

μΈν„°νŽ˜μ΄μŠ€ 속성 κ°’
strftime() μŠ€λ ˆλ“œ μ•ˆμ „μ„± MT-Safe env locale

CONFORMING TO

SVr4, C89, C99. ANSI C에 μžˆλŠ” λ³€ν™˜(ν‘œμ‹œ μ—†μŒ), 단일 μœ λ‹‰μŠ€ κ·œκ²©μ— μžˆλŠ” λ³€ν™˜(SU ν‘œμ‹œ), Olson의 timezone νŒ¨ν‚€μ§€μ—μ„œ μ œκ³΅ν•˜λŠ” λ³€ν™˜(TZ ν‘œμ‹œ), glibcμ—μ„œ μ œκ³΅ν•˜λŠ” λ³€ν™˜(GNU ν‘œμ‹œ) μ‚¬μ΄μ—λŠ” μ—„κ²©ν•œ 포함 관계가 μžˆλ‹€. 단 glibc2μ—μ„œλŠ” %+λ₯Ό μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€. ν•œνŽΈμœΌλ‘œ glibc2μ—λŠ” λ‹€λ₯Έ μ—¬λŸ¬ ν™•μž₯이 μžˆλ‹€. POSIX.1μ—μ„œλŠ” ANSI Cλ§Œμ„ μ°Έμ‘°ν•œλ‹€. ν•˜μ§€λ§Œ POSIX.2μ—μ„œλŠ” date(1) ν•˜μ—μ„œ strftime()에도 적용될 수 μžˆμ„ μ—¬λŸ¬ ν™•μž₯듀을 κΈ°μˆ ν•œλ‹€. %F λ³€ν™˜μ€ C99 및 POSIX.1-2001에 μžˆλ‹€.

SUSv2μ—μ„œλŠ” %S λ³€ν™˜μžμ˜ ν—ˆμš© λ²”μœ„κ°€ 00μ—μ„œ 61κΉŒμ§€μ΄λ‹€. μ΄λŠ” 1뢄에 μœ€μ΄ˆκ°€ 두 번 포함될 수 μžˆλŠ” 이둠적 κ°€λŠ₯성에 λŒ€λΉ„ν•˜κΈ° μœ„ν•œ 것이닀. (μ§€κΈˆκΉŒμ§€ 그런 κ²½μš°λŠ” ν•œ λ²ˆλ„ μ—†μ—ˆλ‹€.)

NOTES

ISO 8601 μ£Ό λ‚ μ§œ

%G, %g, %VλŠ” ISO 8601 ν‘œμ€€μ— μ •μ˜λœ μ£Ό κΈ°μ€€ μ—°λ„λ‘œλΆ€ν„° κ³„μ‚°ν•œ 값듀을 λ‚΄λ†“λŠ”λ‹€. 이 μ²΄κ³„μ—μ„œλŠ” μ›”μš”μΌλΆ€ν„° ν•œ μ£Όκ°€ μ‹œμž‘ν•˜λ©°, 첫 번째 주에 01λ²ˆμ„ 뢙이고 λ§ˆμ§€λ§‰ μ£ΌλŠ” 52λ²ˆμ΄λ‚˜ 53번이 λœλ‹€. 1번 μ£ΌλŠ” 4일 이상이 μƒˆν•΄μ— μ†ν•˜λŠ” 첫 번째 주이닀. (즉 01번 μ£ΌλŠ” λͺ©μš”일을 ν¬ν•¨ν•œ κ·Έν•΄ 첫째 주이기도 ν•˜κ³ , 1μ›” 4일을 ν¬ν•¨ν•œ 주이기도 ν•˜λ‹€.) μƒˆν•΄μ˜ 달λ ₯ 첫 번째 μ£Όμ—μ„œ 3일 μ΄ν•˜κ°€ 그해에 속할 λ•Œ ISO 8601 μ£Ό 기반 μ²΄κ³„μ—μ„œλŠ” κ·Έ 날듀을 μ „ν•΄μ˜ 53번 주둜 κ³„μ‚°ν•œλ‹€. 예λ₯Ό λ“€μ–΄ 2010λ…„ 1μ›” 1일은 κΈˆμš”μΌμ΄κ³ , κ·Έλž˜μ„œ κ·Έ 달λ ₯ 주의 3일만 2010년에 μ†ν•œλ‹€. λ”°λΌμ„œ ISO 8601 μ£Ό 기반 μ²΄κ³„μ—μ„œλŠ” κ·Έ 날듀을 2009λ…„(%G)의 53번 μ£Ό(%V)에 ν¬ν•¨λ˜λŠ” 걸둜 λ³Έλ‹€. 즉 ISO 8601 κΈ°μ€€ 2010λ…„μ˜ 01번 μ£ΌλŠ” 2010λ…„ 1μ›” 4일 μ›”μš”μΌμ— μ‹œμž‘ν•œλ‹€.

glibc μ°Έκ³  사항

glibcμ—μ„œλŠ” λ³€ν™˜ μ§€μ •μž ν™•μž₯을 λͺ‡ κ°€μ§€ μ œκ³΅ν•œλ‹€. (이 ν™•μž₯듀은 POSIX.1-2001에 λͺ…세돼 μžˆμ§€ μ•Šμ§€λ§Œ λͺ‡λͺ‡ λ‹€λ₯Έ μ‹œμŠ€ν…œμ—μ„œλ„ λΉ„μŠ·ν•œ κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.) '%' λ¬Έμžμ™€ λ³€ν™˜ μ§€μ • 문자 사이에 μ„ νƒμ μœΌλ‘œ ν”Œλž˜κ·Έμ™€ ν•„λ“œ 폭을 μ§€μ •ν•  수 μžˆλ‹€. (E 및 O μˆ˜μ‹μžκ°€ μžˆλŠ” κ²½μš°μ—λŠ” κ·Έ μ•žμ— μ˜¨λ‹€.)

λ‹€μŒ ν”Œλž˜κ·Έ λ¬Έμžλ“€μ„ ν—ˆμš©ν•œλ‹€.

_ (밑쀄) 수둜 된 κ²°κ³Ό λ¬Έμžμ—΄μ˜ λ‚¨λŠ” 곡간을 곡백 문자둜 μ±„μš΄λ‹€.
- (λŒ€μ‹œ) 수둜 된 κ²°κ³Ό λ¬Έμžμ—΄μ˜ λ‚¨λŠ” 곡간을 μ±„μš°μ§€ μ•ŠλŠ”λ‹€.
0 수둜 된 κ²°κ³Ό λ¬Έμžμ—΄μ˜ λ‚¨λŠ” 곡간을 0으둜 μ±„μš΄λ‹€. κ·Έ λ³€ν™˜ μ§€μ • 문자의 κΈ°λ³Έ 방식이 곡백 문자둜 μ±„μš°κΈ°λ”λΌλ„ 0을 μ“΄λ‹€.
^ κ²°κ³Ό λ¬Έμžμ—΄μ˜ μ•ŒνŒŒλ²³ 문자λ₯Ό λŒ€λ¬Έμžλ‘œ λ°”κΎΌλ‹€.
# κ²°κ³Ό λ¬Έμžμ—΄μ˜ λŒ€μ†Œλ¬Έμžλ₯Ό λ’€λ°”κΎΌλ‹€. (이 ν”Œλž˜κ·ΈλŠ” νŠΉμ • λ³€ν™˜ μ§€μ • λ¬Έμžλ“€μ—λ§Œ λ™μž‘ν•˜λ©° κ·Έ μ€‘μ—μ„œλ„ μ‹€μ œλ‘œλŠ” %Zμ—μ„œλ§Œ μœ μš©ν•˜λ‹€.)

μ‹­μ§„μˆ˜λ‘œ 된 폭 μ§€μ •μžκ°€ (μ‘΄μž¬ν•˜μ§€ μ•Šμ„ μˆ˜λ„ μžˆλŠ”) ν”Œλž˜κ·Έ λ‹€μŒμ— μ„ νƒμ μœΌλ‘œ 올 수 μžˆλ‹€. ν•„λ“œμ˜ μ›λž˜ 크기가 κ·Έ 폭보닀 μž‘μœΌλ©΄ κ²°κ³Ό λ¬Έμžμ—΄ μ™Όμͺ½μ„ μ±„μ›Œμ„œ μ§€μ •ν•œ 폭으둜 λ§žμΆ˜λ‹€.

BUGS

좜λ ₯ λ¬Έμžμ—΄μ΄ max λ°”μ΄νŠΈλ₯Ό λ„˜κ²Œ 될 κ²½μš°μ— errnoλ₯Ό μ„€μ •ν•˜μ§€ μ•ŠλŠ”λ‹€. 이 λ•Œλ¬Έμ— κ·Έ 였λ₯˜ κ²½μš°μ™€ format λ¬Έμžμ—΄μ΄ μ λ²•ν•˜κ²Œ 길이 0인 좜λ ₯ λ¬Έμžμ—΄μ„ λ§Œλ“€μ–΄ λ‚΄λŠ” 경우λ₯Ό ꡬ별할 수 μ—†λ‹€. POSIX.1-2001μ—μ„œλŠ” strftime()에 λŒ€ν•΄ μ–΄λ–€ errno 섀정도 λͺ…μ„Έν•˜κ³  μžˆμ§€ μ•Šλ‹€.

일뢀 버그 μžˆλŠ” gcc(1) λ²„μ „λ“€μ—μ„œλŠ” %c μ‚¬μš© μ‹œ warning: `%c' yields only last 2 digits of year in some locales라고 λ‚˜μ˜¨λ‹€. λ¬Όλ‘  ν”„λ‘œκ·Έλž˜λ¨Έλ“€μ€ 많이 μ“°λŠ” λ‚ μ§œ 및 μ‹œκ°„ ν‘œν˜„μ΄ λ‚˜μ˜€λŠ” %cλ₯Ό μ“°λŠ” 게 λ°”λžŒμ§ν•˜λ‹€. 이런 gcc(1) 문제λ₯Ό ν”Όν•˜κΈ° μœ„ν•œ μ˜¨κ°– ν¬ν•œν•œ μœ„μž₯ 방법듀을 λ§Œλ‚  수 μžˆλŠ”λ°, κ·Έ 쀑 비ꡐ적 κΉ”λ”ν•œ 방식은 쀑계 ν•¨μˆ˜λ₯Ό μΆ”κ°€ν•˜λŠ” 것이닀.

size_t
my_strftime(char *s, size_t max, const char *fmt,
            const struct tm *tm)
{
    return strftime(s, max, fmt, tm);
}

μš”μ¦˜μ€ gcc(1)에 -Wno-format-y2k μ˜΅μ…˜μ΄ μžˆμ–΄μ„œ κ·Έ κ²½κ³ λ₯Ό 막을 수 μžˆμœΌλ―€λ‘œ μœ„ 우회 방법이 λ”λŠ” ν•„μš”μΉ˜ μ•Šλ‹€.

EXAMPLE

RFC 2822 μ€€μˆ˜ λ‚ μ§œ ν˜•μ‹ (%a 및 %bμ—λŠ” μ˜μ–΄ 둜캘)

"%a, %d %b %Y %T %z"

RFC 822 μ€€μˆ˜ λ‚ μ§œ ν˜•μ‹ (%a 및 %bμ—λŠ” μ˜μ–΄ 둜캘)

"%a, %d %b %y %T %z"

μ˜ˆμ‹œ ν”„λ‘œκ·Έλž¨

μ•„λž˜ ν”„λ‘œκ·Έλž¨μœΌλ‘œ strftime() λ™μž‘μ„ μ‹€ν—˜ν•΄ λ³Ό 수 μžˆλ‹€.

λ‹€μŒμ€ glibc의 strftime() κ΅¬ν˜„μ΄ λ‚΄λ†“λŠ” κ²°κ³Ό λ¬Έμžμ—΄ μ˜ˆμ‹œμ΄λ‹€.

$ ./a.out '%m'
Result string is "11"
$ ./a.out '%5m'
Result string is "00011"
$ ./a.out '%_5m'
Result string is "   11"

ν”„λ‘œκ·Έλž¨ μ†ŒμŠ€

#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
    char outstr[200];
    time_t t;
    struct tm *tmp;

    t = time(NULL);
    tmp = localtime(&t);
    if (tmp == NULL) {
        perror("localtime");
        exit(EXIT_FAILURE);
    }

    if (strftime(outstr, sizeof(outstr), argv[1], tmp) == 0) {
        fprintf(stderr, "strftime returned 0");
        exit(EXIT_FAILURE);
    }

    printf("Result string is \"%s\"\n", outstr);
    exit(EXIT_SUCCESS);
}

SEE ALSO

date(1), time(2), ctime(3), setlocale(3), sprintf(3), strptime(3)


2019-03-06

⚠️ **GitHub.com Fallback** ⚠️