Namespaces
Variants

gmtime, gmtime_r, gmtime_s

From cppreference.net
헤더 파일에 정의됨 <time.h>
struct tm * gmtime ( const time_t * timer ) ;
(1)
struct tm * gmtime_r ( const time_t * timer, struct tm * buf ) ;
(2) (C23부터)
struct tm * gmtime_s ( const time_t * restrict timer, struct tm * restrict buf ) ;
(3) (C11부터)
1) 주어진 에포크 이후 시간( time_t 값, timer 가 가리키는)을 협정 세계시(UTC)로 표현된 캘린더 시간으로 변환합니다. 결과는 정적 저장소에 저장되며 해당 정적 저장소에 대한 포인터가 반환됩니다.
2) (1) 과 동일하지만, 함수가 결과를 위해 사용자가 제공한 저장 공간 buf 를 사용한다는 점이 다릅니다.
3) (1) 과 동일하지만, 함수가 결과를 위해 사용자 제공 저장소 buf 를 사용하며, 런타임에 다음 오류들이 감지되어 현재 설치된 constraint handler 함수를 호출한다는 점이 다릅니다:
  • timer 또는 buf 가 null 포인터인 경우
모든 bounds-checked 함수들과 마찬가지로, gmtime_s 는 구현에 의해 __STDC_LIB_EXT1__ 가 정의되고, 사용자가 <time.h> 를 포함하기 전에 __STDC_WANT_LIB_EXT1__ 를 정수 상수 1 로 정의한 경우에만 사용 가능함이 보장됩니다.

목차

매개변수

timer - time_t 객체를 가리키는 포인터 (변환 대상)
buf - struct tm 객체를 가리키는 포인터 (결과 저장용)

반환값

1) 성공 시 정적 내부 tm 객체에 대한 포인터, 그렇지 않으면 null 포인터. 이 구조체는 gmtime , localtime , 그리고 ctime 사이에서 공유될 수 있으며 각 호출 시 덮어씌워질 수 있습니다.
2,3) buf 포인터의 복사본, 또는 오류 시 null 포인터(이는 런타임 제약 조건 위반이나 지정된 시간을 UTC로 변환하는 데 실패한 경우일 수 있음).

참고 사항

gmtime 는 스레드 안전하지 않을 수 있습니다.

POSIX는 gmtime gmtime_r 가 인자가 너무 커서 실패할 경우 errno EOVERFLOW 로 설정하도록 요구합니다.

Microsoft CRT gmtime_s 구현은 매개변수 순서가 반대로 되어 있어 C 표준과 호환되지 않습니다.

예제

#define __STDC_WANT_LIB_EXT1__ 1
#define _XOPEN_SOURCE // for putenv
#include <stdio.h>
#include <stdlib.h>   // for putenv
#include <time.h>
int main(void)
{
    time_t t = time(NULL);
    printf("UTC:       %s", asctime(gmtime(&t)));
    printf("local:     %s", asctime(localtime(&t)));
    // POSIX-specific
    putenv("TZ=Asia/Singapore");
    printf("Singapore: %s", asctime(localtime(&t)));
#ifdef __STDC_LIB_EXT1__
    struct tm buf;
    char str[26];
    asctime_s(str, sizeof str, gmtime_s(&t, &buf));
    printf("UTC:       %s", str);
    asctime_s(str, sizeof str, localtime_s(&t, &buf));
    printf("local:     %s", str);
#endif
}

가능한 출력:

UTC:       Fri Sep 15 14:22:05 2017
local:     Fri Sep 15 14:22:05 2017
Singapore: Fri Sep 15 22:22:05 2017
UTC:       Fri Sep 15 14:22:05 2017
local:     Fri Sep 15 14:22:05 2017

참고문헌

  • C23 표준 (ISO/IEC 9899:2024):
  • 7.27.3.3 The gmtime function (p: TBD)
  • K.3.8.2.3 The gmtime_s function (p: TBD)
  • C17 표준 (ISO/IEC 9899:2018):
  • 7.27.3.3 gmtime 함수 (p: 288)
  • K.3.8.2.3 gmtime_s 함수 (p: 454-455)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.27.3.3 gmtime 함수 (p: 393-394)
  • K.3.8.2.3 gmtime_s 함수 (p: 626-627)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.23.3.3 gmtime 함수 (p: 343)
  • C89/C90 표준 (ISO/IEC 9899:1990):
  • 4.12.3.3 gmtime 함수

참고 항목

에포크 이후 시간을 지역 시간으로 표현된 달력 시간으로 변환
(함수)