정의
time_t는 C와 C++ 프로그램 언어 표준 라이브러리에서 사용되는 데이터 타입이다. 시스템이 제공하는 시간 값을 저장하기 위해 정의된 정수형(또는 실수형) 별칭으로, 일반적으로 1970년 1월 1일 00:00:00 UTC(유닉스 시대)부터 경과한 초 수를 표현한다.
표준화 및 정의 위치
- ISO C 표준(예: C11) 및 C++ 표준(예: C++17)에서
<time.h>(또는 C++에서는<ctime>) 헤더에 선언된다. typedef혹은using구문을 통해 구현체마다 실제 기본형이 달라질 수 있다. 흔히long,long long,int64_t등 64비트 정수형이 사용된다.
주요 함수와 연계
| 함수 | 반환 값(또는 매개변수) | time_t와의 관계 |
|---|---|---|
time(time_t *tloc) |
현재 시각을 time_t 형식으로 반환, tloc이 널이 아니면 그 위치에 저장 |
|
difftime(double, time_t, time_t) |
두 time_t 값 사이의 차이를 초 단위 double으로 반환 |
|
mktime(struct tm *) |
struct tm 구조체를 time_t로 변환 |
|
gmtime(const time_t *), localtime(const time_t *) |
time_t 값을 struct tm 구조체로 변환(UTC/로컬) |
|
ctime(const time_t *) |
time_t 값을 인간이 읽을 수 있는 문자열로 변환 |
표현 범위와 제한
- 구현에 따라
time_t가 32비트 정수인 경우 2038년 1월 19일 03:14:07 UTC 이후의 시간을 나타낼 수 없어 2038 문제(Year 2038 problem)가 발생한다. 최신 시스템에서는 64비트time_t를 사용해 이 문제를 회피한다. - 일부 시스템에서는
time_t를 부동소수점 실수형으로 정의하기도 한다(예: 일부 실시간 운영체제).
역사 및 어원
time_t는 초기 유닉스 운영체제에서 날짜와 시간을 저장하기 위해 도입된 타입이다. 이름은 “time type”을 의미하는time과 타입을 구분하기 위한 접미사t를 결합한 것으로, C 표준이 이를 채택하면서 널리 사용되게 되었다.
사용 예시 (C)
#include <time.h>
#include <stdio.h>
int main(void) {
time_t now = time(NULL); // 현재 시각 얻기
printf("현재 Unix 시간: %lld
", (long long)now);
return 0;
}
관련 표준
- ISO/IEC 9899 (C 표준) – §7.23.2 “Time types”
- ISO/IEC 14882 (C++ 표준) – §30.4 “Time utilities”
참고 사항
time_t는 구현에 따라 크기와 부호가 달라질 수 있으므로, 특정 범위의 시간 연산을 할 때는 해당 플랫폼의 정의를 확인하는 것이 필요하다.time_t자체는 시간대(time zone) 정보를 포함하지 않으며, 시간대 변환은gmtime,localtime등 별도 함수에서 수행한다.