_mkgmtime
, , _mkgmtime32
_mkgmtime64
struct tm
로 표시되는 UTC 시간을 time_t
형식으로 표시되는 UTC 시간으로 변환합니다.
구문
time_t _mkgmtime(
struct tm* timeptr
);
__time32_t _mkgmtime32(
struct tm* timeptr
);
__time64_t _mkgmtime64(
struct tm* timeptr
);
매개 변수
timeptr
변환할 UTC 시간에 대한 포인터(struct tm
)입니다.
반환 값
1970년 1월 1일 자정 이후 경과된 UTC(협정 세계시) 형식의 시간(초)을 나타내는 __time32_t
또는 __time64_t
형식의 수량입니다. 날짜가 범위를 벗어났거나(주의 섹션 참조) 입력을 유효한 시간으로 해석할 수 없는 경우 반환 값은 -1입니다.
설명
_mkgmtime32
및 _mkgmtime64
함수는 UTC 시간을 UTC 형식의 시간을 나타내는 __time32_t
또는 __time64_t
형식으로 변환합니다. 현지 시간을 UTC 시간으로 변환하려면 mktime
, _mktime32
및 _mktime64
를 대신 사용합니다.
_mkgmtime
은 _mkgmtime64
로 계산되는 인라인 함수이며 time_t
는 __time64_t
와 동일합니다. 컴파일러에서 time_t
를 이전의 32비트 time_t
로 해석하게 해야 하는 경우 _USE_32BIT_TIME_T
를 정의할 수 있습니다. 애플리케이션이 32비 time_t
트의 최대 범위인 2038년 1월 18일 이후에 실패할 수 있으므로 권장하지 않습니다. 64비트 플랫폼에서는 전혀 허용되지 않습니다.
전달된 시간 구조는 함수에 의해 _mktime
변경되는 것과 같은 방식으로 다음과 같이 변경됩니다. tm_wday
및 필드는 값에 tm_yday
따라 새 값 tm_mday
tm_year
으로 설정됩니다. 시간이 UTC tm_isdst
로 간주되므로 필드는 무시됩니다.
_mkgmtime32
함수의 범위는 1970년 1월 1일 자정(UTC)에서 2038년 1월 18일 오후 11시 59분 59초(UTC)까지입니다. _mkgmtime64
의 범위는 1970년 1월 1일 자정(UTC)에서 3000년 12월 31일 오후 11시 59분 59초(UTC)까지입니다. 범위를 벗어난 날짜는 반환 값이 -1이 됩니다. _mkgmtime
의 범위는 _USE_32BIT_TIME_T
정의 여부에 따라 달라집니다. 기본값인 정의되지 않은 경우 범위는 _mkgmtime64
. 그렇지 않으면 범위가 32비트 범위 _mkgmtime32
로 제한됩니다.
둘 다 gmtime
변환 localtime
에 공통 정적 버퍼를 사용합니다. 이 버퍼를 _mkgmtime
에 제공하면 이전 내용이 제거됩니다.
예제
// crt_mkgmtime.c
#include <stdio.h>
#include <time.h>
int main()
{
struct tm t1, t2;
time_t now, mytime, gmtime;
char buff[30];
time( & now );
_localtime64_s( &t1, &now );
_gmtime64_s( &t2, &now );
mytime = mktime(&t1);
gmtime = _mkgmtime(&t2);
printf("Seconds since midnight, January 1, 1970\n");
printf("My time: %I64d\nGM time (UTC): %I64d\n\n", mytime, gmtime);
/* Use asctime_s to display these times. */
_localtime64_s( &t1, &mytime );
asctime_s( buff, sizeof(buff), &t1 );
printf( "Local Time: %s\n", buff );
_gmtime64_s( &t2, &gmtime );
asctime_s( buff, sizeof(buff), &t2 );
printf( "Greenwich Mean Time: %s\n", buff );
}
Seconds since midnight, January 1, 1970
My time: 1171588492
GM time (UTC): 1171588492
Local Time: Thu Feb 15 17:14:52 2007
Greenwich Mean Time: Fri Feb 16 01:14:52 2007
다음 예제에서는 불완전한 구조체가 어떻게 채워지는지 보여 집니다 _mkgmtime
. 요일 및 연도의 값을 계산합니다.
// crt_mkgmtime2.c
#include <stdio.h>
#include <time.h>
#include <memory.h>
int main()
{
struct tm t1, t2;
time_t gmtime;
char buff[30];
memset(&t1, 0, sizeof(struct tm));
memset(&t2, 0, sizeof(struct tm));
t1.tm_mon = 1;
t1.tm_isdst = 0;
t1.tm_year = 103;
t1.tm_mday = 12;
// The day of the week and year will be incorrect in the output here.
asctime_s( buff, sizeof(buff), &t1);
printf("Before calling _mkgmtime, t1 = %s t.tm_yday = %d\n",
buff, t1.tm_yday );
gmtime = _mkgmtime(&t1);
// The correct day of the week and year were determined.
asctime_s( buff, sizeof(buff), &t1);
printf("After calling _mkgmtime, t1 = %s t.tm_yday = %d\n",
buff, t1.tm_yday );
}
Before calling _mkgmtime, t1 = Sun Feb 12 00:00:00 2003
t.tm_yday = 0
After calling _mkgmtime, t1 = Wed Feb 12 00:00:00 2003
t.tm_yday = 42
참고 항목
시간 관리
asctime
, _wasctime
asctime_s
, _wasctime_s
gmtime
, , _gmtime32
_gmtime64
gmtime_s
, , _gmtime32_s
_gmtime64_s
localtime_s
, , _localtime32_s
_localtime64_s
mktime
, , _mktime32
_mktime64
time
, , _time32
_time64