728x90
반응형
C 언어 표준 API - time.h
의 시간 변환 및 포맷팅 (strftime
, gmtime
, localtime
)
C 언어에서 시간을 다룰 때 time.h
헤더 파일을 사용합니다. 특히, strftime
, gmtime
, localtime
함수는 시간을 변환하고 포맷팅하는 데 유용합니다. 이번 포스팅에서는 이 세 가지 함수에 대해 설명하고 예제 코드를 통해 활용 방법을 익혀보겠습니다.
1. gmtime
과 localtime
함수
1.1 gmtime
함수
gmtime
함수는 time_t
타입의 값을 받아 UTC(세계 협정시) 기준의 struct tm
구조체로 변환합니다.
#include <stdio.h>
#include <time.h>
int main() {
time_t raw_time;
struct tm *gmt;
time(&raw_time); // 현재 시간을 가져옴
gmt = gmtime(&raw_time); // UTC 기준으로 변환
printf("UTC 시간: %d-%02d-%02d %02d:%02d:%02d\n",
gmt->tm_year + 1900, gmt->tm_mon + 1, gmt->tm_mday,
gmt->tm_hour, gmt->tm_min, gmt->tm_sec);
return 0;
}
실행 결과 (예시)
UTC 시간: 2025-01-31 12:34:56
1.2 localtime
함수
localtime
함수는 time_t
값을 현재 시스템의 로컬 시간대로 변환하여 struct tm
구조체를 반환합니다.
#include <stdio.h>
#include <time.h>
int main() {
time_t raw_time;
struct tm *local;
time(&raw_time); // 현재 시간을 가져옴
local = localtime(&raw_time); // 로컬 시간으로 변환
printf("로컬 시간: %d-%02d-%02d %02d:%02d:%02d\n",
local->tm_year + 1900, local->tm_mon + 1, local->tm_mday,
local->tm_hour, local->tm_min, local->tm_sec);
return 0;
}
실행 결과 (예시, 한국 시간 기준)
로컬 시간: 2025-01-31 21:34:56
2. strftime
을 활용한 시간 포맷팅
2.1 strftime
함수 개요
strftime
함수는 struct tm
구조체를 포맷 문자열에 맞춰 원하는 형식으로 변환해주는 함수입니다. 사용법은 다음과 같습니다.
size_t strftime(char *s, size_t max, const char *format, const struct tm *tm);
s
: 변환된 문자열을 저장할 버퍼max
: 버퍼의 최대 크기format
: 포맷 문자열tm
: 변환할struct tm
구조체 포인터
2.2 주요 포맷 지정자
지정자 | 의미 | 예시 |
---|---|---|
%Y |
연도 (4자리) | 2025 |
%y |
연도 (2자리) | 25 |
%m |
월 (2자리) | 01 |
%d |
일 (2자리) | 31 |
%H |
시간 (24시간제) | 21 |
%I |
시간 (12시간제) | 09 |
%M |
분 | 34 |
%S |
초 | 56 |
%p |
AM/PM 표시 | PM |
%A |
요일 (긴 형식) | Friday |
%a |
요일 (짧은 형식) | Fri |
%B |
월 (긴 형식) | January |
%b |
월 (짧은 형식) | Jan |
%Z |
타임존 | KST |
2.3 strftime
예제 코드
#include <stdio.h>
#include <time.h>
int main() {
time_t raw_time;
struct tm *time_info;
char buffer[80];
time(&raw_time); // 현재 시간을 가져옴
time_info = localtime(&raw_time); // 로컬 시간 변환
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S (%A, %B %d, %Y)", time_info);
printf("포맷팅된 시간: %s\n", buffer);
return 0;
}
실행 결과 (예시)
포맷팅된 시간: 2025-01-31 21:34:56 (Friday, January 31, 2025)
3. gmtime
vs localtime
차이
함수 | 반환 시간 | 설명 |
---|---|---|
gmtime |
UTC (세계 협정시) | 국제 표준 시간으로 변환 |
localtime |
시스템의 로컬 시간 | 시스템 시간대(TZ)에 맞춰 변환 |
활용 예시
- 서버 응용: UTC 기준 시간 저장 시
gmtime
사용 - 사용자 인터페이스: 로컬 시간으로 출력 시
localtime
사용
4. 마무리
이번 포스팅에서는 time.h
의 gmtime
, localtime
, strftime
함수에 대해 알아보았습니다. 이 함수들을 활용하면 시간 정보를 UTC 또는 로컬 시간으로 변환하고, 다양한 형식으로 포맷팅할 수 있습니다. 특히 strftime
을 활용하면 사람이 읽기 쉬운 형태로 시간을 출력할 수 있어 유용합니다.
반응형
'c 언어 > c 표준 라이브러리(Standard C Library)' 카테고리의 다른 글
C 표준 API: 시스템 호출 및 종료 (system, exit, abort) (0) | 2025.02.25 |
---|---|
C 언어에서 환경 변수 다루기 (getenv, putenv, setenv, unsetenv) (0) | 2025.02.24 |
C time.h 개요 및 시간 관련 함수 (0) | 2025.02.22 |
C math.h의 절댓값 및 기타 함수 설명 (0) | 2025.02.21 |
C언어 `math.h`의 삼각 함수 정리 (0) | 2025.02.20 |