WIPIVERSE

time_t

정의
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 등 별도 함수에서 수행한다.
둘러보기

더 찾아볼 만한 주제

    전체 문서 보기