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

NAME

strptime - μ‹œκ°„ λ¬Έμžμ—΄ ν‘œν˜„μ„ μ‹œκ°„ tm ꡬ쑰체둜 λ³€ν™˜ν•˜κΈ°

SYNOPSIS

#define _XOPEN_SOURCE       /* feature_test_macros(7) μ°Έκ³  */
#include <time.h>

char *strptime(const char *s, const char *format, struct tm *tm);

DESCRIPTION

strptime() ν•¨μˆ˜λŠ” strftime(3)의 λ°˜λŒ€μ΄λ‹€. 즉 sκ°€ κ°€λ¦¬ν‚€λŠ” λ¬Έμžμ—΄μ„ format에 μ§€μ •λœ μ„œμ‹μ„ μ¨μ„œ tm이 κ°€λ¦¬ν‚€λŠ” "λΆ„ν•  μ‹œκ°„" ꡬ쑰체에 μ €μž₯된 κ°’λ“€λ‘œ λ³€ν™˜ν•œλ‹€.

λΆ„ν•  μ‹œκ°„ ꡬ쑰체 tm은 <time.h>에 λ‹€μŒμ²˜λŸΌ μ •μ˜λΌ μžˆλ‹€.

struct tm {
    int tm_sec;    /* 초 (0-60) */
    int tm_min;    /* λΆ„ (0-59) */
    int tm_hour;   /* μ‹œκ°„ (0-23) */
    int tm_mday;   /* μ›” 쀑 λ‚  번호 (1-31) */
    int tm_mon;    /* μ›” (0-11) */
    int tm_year;   /* λ…„ - 1900 */
    int tm_wday;   /* μ£Ό 쀑 λ‚  번호 (0-6, μΌμš”μΌ = 0) */
    int tm_yday;   /* μ—° 쀑 λ‚  번호 (0-365, 1μ›” 1일 = 0) */
    int tm_isdst;  /* 일광 μ ˆμ•½ μ‹œκ°„ */
};

tm ꡬ쑰체에 λŒ€ν•œ 더 μžμ„Έν•œ λ‚΄μš©μ€ ctime(3)을 보라.

format μΈμžλŠ” scanf(3)λ₯Ό μ—°μƒμ‹œν‚€λŠ” ν•„λ“œ 기술 ν•­λͺ©κ³Ό ν…μŠ€νŠΈ λ¬Έμžλ“€λ‘œ 이뀄진 λ¬Έμžμ—΄μ΄λ‹€. 각 ν•„λ“œ 기술 ν•­λͺ©μ€ % λ¬Έμžμ™€ 뒀이은 λ‹€λ₯Έ 문자 ν•˜λ‚˜λ‘œ λ˜μ–΄ μžˆμ–΄μ„œ κ·Έ ν•„λ“œ 기술 ν•­λͺ©μ΄ 무엇을 λŒ€μ‹ ν•˜λŠ”μ§€ λ‚˜νƒ€λ‚Έλ‹€. format λ¬Έμžμ—΄μ˜ λ‹€λ₯Έ λ¬Έμžλ“€μ€ λͺ¨λ‘ μž…λ ₯ λ¬Έμžμ—΄μ— λŒ€μ‘ν•˜λŠ” λ¬Έμžκ°€ μžˆμ–΄μ•Ό ν•œλ‹€. 단 μ˜ˆμ™Έμ μœΌλ‘œ 곡백 λ¬ΈμžλŠ” μž…λ ₯ λ¬Έμžμ—΄μ˜ 0개 μ΄μƒμ˜ 곡백 λ¬Έμžμ™€ λŒ€μ‘ν•œλ‹€. 두 ν•„λ“œ 기술 ν•­λͺ© μ‚¬μ΄μ—λŠ” κ³΅λ°±μ΄λ‚˜ λ‹€λ₯Έ 영자 λ˜λŠ” 숫자 λ¬Έμžκ°€ μžˆμ–΄μ•Ό ν•œλ‹€.

strptime() ν•¨μˆ˜λŠ” μ™Όμͺ½μ—μ„œ 였λ₯Έμͺ½μœΌλ‘œ μž…λ ₯ λ¬Έμžμ—΄μ„ μ²˜λ¦¬ν•΄ λ‚˜κ°„λ‹€. κ°€λŠ₯ν•œ μ„Έ κ°€μ§€ μž…λ ₯ μš”μ†Œ(곡백, λ¦¬ν„°λŸ΄, μ„œμ‹) 각각을 ν•˜λ‚˜μ”© μ²˜λ¦¬ν•œλ‹€. μž…λ ₯이 μ„œμ‹ λ¬Έμžμ—΄μ— μΌμΉ˜λ˜μ§€ μ•ŠμœΌλ©΄ ν•¨μˆ˜ λ™μž‘μ„ λ©ˆμΆ˜λ‹€. μ„œμ‹ 및 μž…λ ₯ λ¬Έμžμ—΄ λ‚˜λ¨Έμ§€λŠ” μ²˜λ¦¬ν•˜μ§€ μ•ŠλŠ”λ‹€.

μ§€μ›ν•˜λŠ” μž…λ ₯ ν•„λ“œ 기술 ν•­λͺ©λ“€μ΄ μ•„λž˜ λ‚˜μ—΄λΌ μžˆλ‹€. ν…μŠ€νŠΈ λ¬Έμžμ—΄(κ°€λ Ή μš”μΌ μ΄λ¦„μ΄λ‚˜ μ›” 이름)을 맞좰 λ³΄λŠ” κ²½μš°μ—λŠ” λŒ€μ†Œλ¬Έμž ꡬ뢄 없이 λΉ„κ΅ν•œλ‹€. 수λ₯Ό 맞좰 λ³΄λŠ” κ²½μš°μ—λŠ” μ•žμ— 0이 μ˜€λŠ” κ±Έ ν—ˆμš©ν•˜λ˜ μš”κ΅¬ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€.

%% % 문자.
%a λ˜λŠ” %A ν˜„μž¬ λ‘œμΊ˜μ— λ”°λ₯Έ μš”μΌ 이름. μΆ•μ•½ 이름 λ˜λŠ” μ›λž˜ 이름.
%b λ˜λŠ” %B λ˜λŠ” %h ν˜„μž¬ λ‘œμΊ˜μ— λ”°λ₯Έ μ›” 이름. μΆ•μ•½ 이름 λ˜λŠ” μ›λž˜ 이름.
%c ν˜„μž¬ 둜캘의 λ‚ μ§œ 및 μ‹œκ°„ ν‘œν˜„.
%C μ„ΈκΈ° 번호. (0-99)
%d λ˜λŠ” %e μ›” 쀑 λ‚ μ§œ. (1-31)
%D %m/%d/%y와 κ°™μŒ. (λ―Έκ΅­ 방식 λ‚ μ§œλ‘œ 미ꡭ인 μ•„λ‹Œ μ΄λ“€μ—κ²Œ λŒ€λ‹¨νžˆ ν˜Όλž€μŠ€λŸ¬μš΄ 방식이닀. μœ λŸ½μ—μ„œλŠ” %d/%m/%yκ°€ 널리 쓰이기 λ•Œλ¬Έμ— 특히 κ·Έλ ‡λ‹€. ISO 8601 ν‘œμ€€ ν˜•μ‹μ€ %Y-%m-%d이닀.
%H μ‹œκ°„. (0-23)
%I 12μ‹œκ°„ μ‹œκ³„μ˜ μ‹œκ°„. (1-12)
%j μ—° 쀑 λ‚ μ§œ. (1-366)
%m μ›” 번호. (1-12)
%M λΆ„. (0-59)
%n μž„μ˜ 길이 곡백.
%p 둜캘의 μ˜€μ „ μ˜€ν›„ ν…μŠ€νŠΈ. (주의: 없을 μˆ˜λ„ 있음.)
%r 12μ‹œκ°„ μ‹œκ³„μ˜ μ‹œκ°„. (둜캘의 μ˜€μ „ μ˜€ν›„ μ‚¬μš©.) POSIX λ‘œμΊ˜μ—μ„œλŠ” %I:%M:%S %p와 κ°™λ‹€. ν˜„μž¬ 둜캘의 LC_TIMEμ—μ„œ t_fmt_ampm이 λΉ„μ–΄ 있으면 λ™μž‘ 방식이 κ·œμ •λΌ μžˆμ§€ μ•Šλ‹€.
%R %H:%Mκ³Ό κ°™μŒ.
%S 초. (0-60. 윀초 λ•Œλ¬Έμ— 60이 κ°€λŠ₯. μ΄μ „μ—λŠ” 61도 ν—ˆμš©ν–ˆμŒ.)
%t μž„μ˜ 길이 곡백.
%T %H:%M:%S와 κ°™μŒ.
%U μΌμš”μΌμ„ 주의 첫째 λ‚ λ‘œ ν•˜λŠ” μ£Ό 번호. (0-53) 1μ›” 첫 번째 μΌμš”μΌμ΄ 1번 μ£Ό 첫날이닀.
%w μ£Ό 쀑 λ‚  번호. (0-6) μΌμš”μΌ = 0.
%W μ›”μš”μΌμ„ 주의 첫째 λ‚ λ‘œ ν•˜λŠ” μ£Ό 번호. (0-53) 1μ›” 첫 번째 μ›”μš”μΌμ΄ 1번 μ£Ό 첫날이닀.
%x λ‚ μ§œ. 둜캘의 λ‚ μ§œ ν˜•μ‹ μ‚¬μš©.
%X μ‹œκ°„. 둜캘의 μ‹œκ°„ ν˜•μ‹ μ‚¬μš©.
%y μ„ΈκΈ° λ‚΄ 연도. (0-99) μ„ΈκΈ°λ₯Ό λ”°λ‘œ μ§€μ •ν•˜μ§€ μ•Šμ•˜μ„ λ•Œ 69-99 λ²”μœ„μ˜ 값은 20μ„ΈκΈ°μ˜ 연도(1969-1999)λ₯Ό 가리킀고, 00-68 λ²”μœ„μ˜ 값은 21μ„ΈκΈ°μ˜ 연도(2000-2068)λ₯Ό 가리킨닀.
%Y μ„ΈκΈ° 포함 연도. (예λ₯Ό λ“€μ–΄ 1991)

μˆ˜μ‹μž E λ˜λŠ” O둜 일뢀 ν•„λ“œ 기술 ν•­λͺ©λ“€μ„ λ³€κ²½ν•΄μ„œ λŒ€μ²΄ ν˜•μ‹ λ‚΄μ§€ μ§€μ • 방식을 써야 함을 λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€. ν˜„μž¬ λ‘œμΊ˜μ— λŒ€μ²΄ ν˜•μ‹ λ‚΄μ§€ μ§€μ • 방식이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λŠ” λ³€κ²½ μ•ˆ 된 ν•„λ“œ 기술 ν•­λͺ©μ„ μ“΄λ‹€.

E μˆ˜μ‹μžλŠ” μž…λ ₯ λ¬Έμžμ—΄μ— λ‚ μ§œ 및 μ‹œκ°„μ„ μœ„ν•œ λ‘œμΊ˜λ³„ λŒ€μ²΄ ν‘œν˜„μ΄ μžˆμ„ 수 μžˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

%Ec 둜캘의 λ‚ μ§œ 및 μ‹œκ°„ λŒ€μ²΄ ν‘œν˜„.
%EC 둜캘의 λŒ€μ²΄ ν‘œν˜„μœΌλ‘œ 된 κΈ°μ€€ 연도(κΈ°κ°„) 이름.
%Ex 둜캘의 λ‚ μ§œ λŒ€μ²΄ ν‘œν˜„.
%EX 둜캘의 μ‹œκ°„ λŒ€μ²΄ ν‘œν˜„.
%Ey 둜캘의 λŒ€μ²΄ ν‘œν˜„μœΌλ‘œ 된 %EC의 μ˜€ν”„μ…‹. (μ—°λ„λ§Œ)
%EY 전체 연도 λŒ€μ²΄ ν‘œν˜„.

O μˆ˜μ‹μžλŠ” 숫자 μž…λ ₯이 λ‘œμΊ˜λ³„ λŒ€μ²΄ ν˜•μ‹μΌ 수 μžˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

%Od λ˜λŠ” %Oe 둜캘의 λŒ€μ²΄ 숫자 심볼을 μ΄μš©ν•œ μ›” 쀑 λ‚ μ§œ. μ•žμ˜ 0을 ν—ˆμš©ν•˜λ˜ μš”κ΅¬ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€.
%OH 둜캘의 λŒ€μ²΄ 숫자 심볼을 μ΄μš©ν•œ (24μ‹œκ°„ μ‹œκ³„) μ‹œκ°„.
%OI 둜캘의 λŒ€μ²΄ 숫자 심볼을 μ΄μš©ν•œ (12μ‹œκ°„ μ‹œκ³„) μ‹œκ°„.
%Om 둜캘의 λŒ€μ²΄ 숫자 심볼을 μ΄μš©ν•œ μ›”.
%OM 둜캘의 λŒ€μ²΄ 숫자 심볼을 μ΄μš©ν•œ λΆ„.
%OS 둜캘의 λŒ€μ²΄ 숫자 심볼을 μ΄μš©ν•œ 초.
%OU 둜캘의 λŒ€μ²΄ 숫자 심볼을 μ΄μš©ν•œ μ—° 쀑 μ£Ό 번호. (μΌμš”μΌμ΄ 주의 첫날)
%Ow 둜캘의 λŒ€μ²΄ 숫자 심볼을 μ΄μš©ν•œ μ£Ό 쀑 λ‚  번호. (μΌμš”μΌ=0)
%OW 둜캘의 λŒ€μ²΄ 숫자 심볼을 μ΄μš©ν•œ μ—° 쀑 μ£Ό 번호. (μ›”μš”μΌμ΄ 주의 첫날)
%Oy 둜캘의 λŒ€μ²΄ 숫자 심볼을 μ΄μš©ν•œ 연도. (%C κΈ°μ€€ μ˜€ν”„μ…‹)

RETURN VALUE

ν•¨μˆ˜μ˜ λ°˜ν™˜ 값은 κ·Έ ν•¨μˆ˜ ν˜ΈμΆœμ—μ„œ μ²˜λ¦¬λ˜μ§€ μ•Šμ€ 첫 λ¬Έμžμ— λŒ€ν•œ 포인터이닀. μž…λ ₯ λ¬Έμžμ—΄μ΄ μ„œμ‹ λ¬Έμžμ—΄μ—μ„œ μš”κ΅¬ν•˜λŠ” 것보닀 λ§Žμ€ 문자λ₯Ό λ‹΄κ³  μžˆλŠ” κ²½μš°μ—λŠ” λ§ˆμ§€λ§‰μœΌλ‘œ μ†Œλͺ¨ν•œ μž…λ ₯ 문자 λ°”λ‘œ λ‹€μŒμ„ λ°˜ν™˜ 값이 가리킨닀. μž…λ ₯ λ¬Έμžμ—΄ 전체λ₯Ό μ†Œλͺ¨ν•œ κ²½μš°μ—λŠ” λ¬Έμžμ—΄ 끝의 널 λ°”μ΄νŠΈλ₯Ό λ°˜ν™˜ 값이 가리킨닀. strptime()μ—μ„œ μ„œμ‹ λ¬Έμžμ—΄ 전체λ₯Ό λ§žμΆ”λŠ” 데 μ‹€νŒ¨ν•˜λ©΄, 즉 였λ₯˜κ°€ λ°œμƒν–ˆμœΌλ©΄ ν•¨μˆ˜κ°€ NULL을 λ°˜ν™˜ν•œλ‹€.

ATTRIBUTES

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

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

CONFORMING TO

POSIX.1-2001, POSIX.1-2008, SUSv2.

NOTES

μ›μΉ™μ μœΌλ‘œ 이 ν•¨μˆ˜μ—μ„œλŠ” tm을 μ΄ˆκΈ°ν™” ν•˜μ§€ μ•Šκ³  λͺ…μ‹œλœ 값듀을 μ €μž₯ν•  뿐이닀. μ΄λŠ” 호좜 전에 tm을 μ΄ˆκΈ°ν™” ν•΄μ•Ό ν•œλ‹€λŠ” λœ»μ΄λ‹€. ν•˜μ§€λ§Œ μ„ΈλΆ€ 사항은 μœ λ‹‰μŠ€ μ‹œμŠ€ν…œλ“€ 간에 μ‘°κΈˆμ”© λ‹€λ₯΄λ‹€. glibc κ΅¬ν˜„μ—μ„œλŠ” λͺ…ν™•νžˆ 지정돼 μžˆμ§€ μ•Šμ€ ν•„λ“œλ“€μ„ κ±΄λ“œλ¦¬μ§€ μ•ŠλŠ”λ‹€. 단 연월일 μš”μ†Œλ“€ 쀑 ν•˜λ‚˜λΌλ„ λ°”λ€Œμ—ˆμœΌλ©΄ tm_wday 및 tm_yday ν•„λ“œλ₯Ό λ‹€μ‹œ κ³„μ‚°ν•œλ‹€.

'y'(μ„ΈκΈ° λ‚΄ 연도) μ§€μ • ν•­λͺ©μ„ glibc 2.0에선 1950-2049 λ²”μœ„μ˜ 연도λ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ²ƒμœΌλ‘œ μ²˜λ¦¬ν•œλ‹€. glibc 2.1λΆ€ν„°λŠ” 1969-2068 λ‚΄ μ—°λ„λ‘œ λ°›λŠ”λ‹€.

glibc μ°Έκ³  사항

λŒ€μΉ­μ„±μ„ μœ„ν•΄ glibcμ—μ„œλŠ” strftime(3)μ—μ„œμ™€ 같은 μ„œμ‹ λ¬Έμžλ“€μ„ strptime()μ—μ„œ μ§€μ›ν•˜λ €κ³  λ…Έλ ₯ν•œλ‹€. (λŒ€λΆ€λΆ„μ˜ 경우 ν•΄λ‹Ή ν•„λ“œλ₯Ό νŒŒμ‹±μ€ ν•˜λ˜ tm λ‚΄ ν•„λ“œλŠ” λ°”κΎΈμ§€ μ•ŠλŠ”λ‹€.)

%F %Y-%m-%d와 κ°™μŒ. ISO 8601 λ‚ μ§œ ν˜•μ‹.
%g ISO μ£Ό 번호 방식에 λΆ€ν•©ν•˜λŠ” μ„ΈκΈ° μ—†λŠ” 연도. (0-99)
%G ISO μ£Ό 번호 방식에 λΆ€ν•©ν•˜λŠ” 연도. (예λ₯Ό λ“€μ–΄ 1991)
%u μ‹­μ§„μˆ˜λ‘œ 된 μ£Ό 쀑 λ‚  번호. (1-7, μ›”μš”μΌ = 1)
%V μ‹­μ§„μˆ˜λ‘œ 된 ISO 8601:1988 μ£Ό 번호. (1-53) 1μ›” 1일을 ν¬ν•¨ν•œ (μ›”μš”μΌλΆ€ν„° μ‹œμž‘ν•˜λŠ”) μ£Όμ—μ„œ 4일 이상이 μƒˆν•΄μ— 있으면 1번 주둜 λ³Έλ‹€. μ•„λ‹ˆλ©΄ μ „λ…„ λ§ˆμ§€λ§‰ 주이고 κ·Έ λ‹€μŒ μ£Όκ°€ 1번 μ£Όκ°€ λœλ‹€.
%z RFC-822/ISO 8601 ν‘œμ€€ μ‹œκ°„λŒ€ μ§€μ •.
%Z μ‹œκ°„λŒ€ 이름.

λΉ„μŠ·ν•˜κ²Œ strftime(3)의 GNU ν™•μž₯ λ•Œλ¬Έμ— %H λ™μ˜μ–΄λ‘œ %kλ₯Ό 받아듀이고, %I λ™μ˜μ–΄λ‘œ %l을, %p λ™μ˜μ–΄λ‘œ %Pλ₯Ό 받아듀인닀. λ§ˆμ§€λ§‰μœΌλ‘œ λ‹€μŒμ„ μ§€μ›ν•œλ‹€.

%s 에포크 1970-01-01 00:00:00 +0000 (UTC) μ΄ν›„μ˜ 초 수. 윀초λ₯Ό μ§€μ›ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λŠ” 윀초λ₯Ό μ„Έμ§€ μ•ŠλŠ”λ‹€.

glibc κ΅¬ν˜„μ—μ„œλŠ” 두 ν•„λ“œ 기술 ν•­λͺ© 사이에 곡백이 있기λ₯Ό μš”κ΅¬ν•˜μ§€ μ•ŠλŠ”λ‹€.

EXAMPLE

λ‹€μŒ μ˜ˆλŠ” strptime() 및 strftime(3) μ‚¬μš© 방식을 보여 μ€€λ‹€.

#define _XOPEN_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

int
main(void)
{
    struct tm tm;
    char buf[255];

    memset(&tm, 0, sizeof(struct tm));
    strptime("2001-11-12 18:31:01", "%Y-%m-%d %H:%M:%S", &tm);
    strftime(buf, sizeof(buf), "%d %b %Y %H:%M", &tm);
    puts(buf);
    exit(EXIT_SUCCESS);
}

SEE ALSO

time(2), getdate(3), scanf(3), setlocale(3), strftime(3)


2017-09-15

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