티스토리 뷰

C | C++

문자열의 일시 변환

야라바 2018. 6. 29. 11:49
728x90

☞ strptime, getdate

<time.h>

char *strptime(const char *s, const char *fmt, struct tm *tp);
struct tm *getdate(const char *str);


다양한 형식을 가진 일자 및 시간 스트링을 구조체 struct tm 형태의 일시 정보로 변환하는 함수들로 strptime()은 분석 대상인 문자열 s와 형식 문자열 fmt를 인수로 전달하면서 결과를 받을 struct tm 구조체의 포인터를 같이 넘기면 문자열을 분석하여 일자 및 시간 정보를 해당 포인터가 가리키는 구조체에 저장합니다. getdate()는 분석 대상 문자열만 인수로 전달하는 간편한 방식이기는 하지만 분석 방식에 한계가 있고 리턴하는 포인터가 시스템 메모리이기 때문에 연관 함수가 호출되면 이전 자료가 지원지는 문제가 있을 수 있습니다. 멀티쓰레드 환경에서는 이를 감안해서 프로그래밍해야 합니다. 만약에 DATEMSK 환경변수에 형식 스트링을 기술했다면 strptime()와 동일한 기능을 수행하지만 지정하지 않았다면 getdate()가 가지고 있는 기본 형식과 비교해서 일치하는 형식을 자동 적용합니다. 기본 형식들은 아래와 같습니다.

  • %m
  • %A %B %d, %Y %H:%M:%S
  • %A
  • %B
  • %m/%d/%y %I %p
  • %d,%m,%Y %H:%M
  • at %A the %dst of %B in %Y
  • run job at %I %p,%B %dnd
  • %A den %d. %B %Y %H.%M Uhr



getdate()과 strptime()에서 사용할 수 있는 형식 요소들은 아래와 같습니다.

  • %a, %A : 현재 언어를 감안한 요일 이름
  • %b, %B, %h : 현재 언어를 감안한 월이름
  • %c : 현재 언어의 선호 일시 형식
  • %C : 세기
  • %d, %e : 일자 01~31
  • %D : %m/%d/%y
  • %F : %Y-%m-%d
  • %g : 년도 00~99
  • %G : 년도 %Y와 동일
  • %H, %k : 시간 00~23
  • %I, %l : 시간 01~12
  • %j : 연중일 001~366
  • %m : 월 01~12
  • %M : 분 00~59
  • %p, %P : 현재 언어를 감안한 AM/PM
  • %r : AM/PM을 포함한 전체 시간
  • %R : 시분 %H:%M
  • %S : 초 00~59
  • %T : %H:%M:%S
  • %u : 요일. 1~7. 1이 월요일
  • %U : 현재 주차. 00~53. 일년중 첫 일요일 이전의 날들이 00
  • %V : ISO 주차. 01~53. 01에는 이전 년도의 마지막 주차와 겹칠 수 있습니다
  • %w : 요일. 0~6. 0이 일요일
  • %W : 현재 주차. 00~53. 일년중 첫 월요일 이전의 날들이 00
  • %x : 현재 언어의 일자 선호 형식
  • %X : 현재 언어의 시간 선호 형식
  • %y : 년도 00~99
  • %Y : 년도
  • %z : 숫자로 표시된 타임존
  • %Z : 타임존 약자
  • %% : %문자




728x90

'C | C++' 카테고리의 다른 글

비지역적 점프  (0) 2018.08.04
알람과 sleep  (0) 2018.06.29
일시의 문자열 변환  (0) 2018.06.29
시간과 일자 관련 함수  (0) 2018.06.29
시간 측정  (0) 2018.06.29