gmtime, gmtime_r, gmtime_s
From cppreference.net
|
헤더 파일에 정의됨
<time.h>
|
||
| (1) | ||
| (2) | (C23부터) | |
| (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 함수
참고 항목
|
(C23)
(C11)
|
에포크 이후 시간을 지역 시간으로 표현된 달력 시간으로 변환
(함수) |
|
C++ documentation
for
gmtime
|
|