다음을 통해 공유


_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