시간 정보를 여러 형식으로 변환할 수 있는데, localtime과 gmtime은 time_t 형 시간 정보를 struct tm형으로 변환한다. 이 형을 한번 살펴보자.
struct tm {
int tm_sec; //초 (0~59)
int tm_min; //분 (0~59)
int tm_hour; //시간 (0~23)
int tm_mday; //일 (1~31)
int tm_mon; //월 (0~11)
int tm_year; //연도(1990~)
int tm_wday; //요일 (0~6)
int tm_yday; //1월 1일 이후의 날짜
int tm_isdst; //썸머타임(양수일 때 유효, 0일때 무효, 음수일 때 사용 불가)
}
- 함수 이름 | 기능
- localtime | time_t형 시간 정보를 struct tm형 지역 시간으로 변환한다.
- gmtime | time_t형 시간 정보를 struct tm형 세계 표준 시간으로 변환한다.
기능에 보면 시간 표기의 차이가 있다는 것을 볼 수 있다. 리눅스 설치 시에 지정한 로컬 타임존에 따라서 지역 시간으로 변환하느냐 아니면 글로벌 시간으로 변환하느냐의 차이다. 사용법은 아래의 예시를 확인하자.


이와 반대로 struct tm 형 시간을 time_t형으로 변환하는 함수 또한 존재한다.
- 함수 이름 | 기능
- mktime | struct tm형 시간 정보를 time_t형으로 변환한다.
또한 struct tm형의 시간 정보를 사용자가 알아보기 쉽게 문자열로 변환해주는 함수 또한 존재한다. 기본적으로 제공되는 서식 형태로도 만들 수 있지만, 개발자가 직접 서식을 지정할 수 잇는 함수 또한 존재한다.
- 함수 이름 | 기능
- asctime | struct tm 형 시간 정보를 문자열로 변환한다.
- strftime | struct tm형 시간 정보를 서식을 갖춘 시간 정보로 변환한다.
변환에 필요한 변환 형식은 변환 문자열을 확인하여 직접 작성하면 된다. 두 번째에 변환 포맷을 지정할 수 있고, 변환 문자열은 다음과 같다.
- 변환 문자열 | 의미
- %a | 요일 이름의 약자
- %A | 요일 이름
- %b | 월 이름의 약자
- %B | 월 이름
- %c | 지역 날짜와 시간
- %d | 날짜
- %H | 시간 (24시간)
- %I | 시간 (12시간)
- %j | 1월 1일 이후의 날짜
- %m | 월
- %M | 분
- %p | AM, PM
- %S | 초
- %w | 요일
- %x | 지역 날짜
- %X | 지역 시간
- %y | 연도
- %Y | 연도(4자리수)
- %% | 퍼센트 기호
어기까지의 내용만 가지고 예제를 확인해보자. 함수 여럿 좀 써보겠다고 해서 자잘하게 해봤다.

