다음을 통해 공유


_mkgmtime, _mkgmtime32, _mkgmtime64

UTC 시간으로 표시를 변환는 tmstruct 를 UTC 시간으로 표시 하는 time_t 형식입니다.

time_t _mkgmtime(
   struct tm* timeptr
);
__time32_t _mkgmtime32(
   struct tm* timeptr
);
__time64_t _mkgmtime64(
   struct tm* timeptr
);

매개 변수

  • timeptr
    포인터를 UTC 시간으로는 structtm변환하다합니다.

반환 값

수량을 입력 __time32_t 또는 __time64_t 시간을 초 단위로 나타내는 지난 1970 년 1 월 1 일 협정 세계시 (UTC)에 자정입니다.날짜 범위를 벗어난 경우 (설명 부분 참조) 또는 입력유효한시간으로 해석 될 수 없는,반환 값은 – 1입니다.

설명

_mkgmtime32_mkgmtime64 함수 시간을 UTC변환하다하는 __time32_t 또는 __time64_t UTC 시간을에서 나타내는 형식입니다.변환하다에 UTC 시간을 로컬 시간을 사용 하 여 mktime, _mktime32, 및 _mktime64 대신 합니다.

_mkgmtime산출 하는인라인함수입니다 _mkgmtime64, 및 time_t 입니다 __time64_t. 해석 하도록컴파일러를 강제 해야 하는 경우 time_t로 이전 32 비트 time_t를 정의할 수 있습니다 _USE_32BIT_TIME_T.2038 년 1 월 19 일 후응용 프로그램실패할 수 있기 때문에 권장 하지 않습니다 (32 비트의 최대 범위 time_t), 및 64 비트 플랫폼에서 모두 사용할 수 없습니다.

전달 시간구조체함께 변경 되는 경우에 다음과 같은 변경 됩니다 있는 _mktime 함수:는 tm_wdaytm_yday 필드의 값을 기준으로 새 값으로 설정 됩니다 tm_mdaytm_year.지정 하는 경우는 tm구조체시간 설정의 tm_isdst필드를:

  • 표준 시간이 적용 되는 나타내려면 0 (0).

  • 일광 절약 시간이 적용 되는 나타내는 0 보다 큰 값입니다.

  • 표준 시간이 나 일광 절약 시간이 적용 되는지는 C 런타임라이브러리코딩하다를영보다 작은 값을 계산 합니다.

C 런타임라이브러리TZ환경변수를 사용 하 여 정확한 일광 절약 시간을 결정 합니다.TZ 설정 되지 않은 경우 운영 체제는 올바른 국가 일광 절약 시간 동작을 얻으려면 쿼리 됩니다.tm_isdst필수필드입니다.설정지 않습니다 값은 정의 되어 있지 않은지 및반환 값을 mktime 예측할 수 없습니다.

범위는 _mkgmtime32함수는 1970 년 1 월 1 일 자정에서 UTC UTC에 년 1 월 19 일 3시 14분: 07, 2038입니다. 범위는 _mkgmtime64 UTC 1970 년 1 월 1 일 자정부터 23시 59분: 59로, 3000, 12 월 31 UTC입니다.범위를 벗어난 날짜 – 1에서반환 값결과입니다.범위는 _mkgmtime 되었는지 여부에 따라 달라 집니다 _USE_32BIT_TIME_T 정의 됩니다.범위 (기본값) 정의 되지 않은 경우입니다 _mkgmtime64. 범위를 32 비트 범위에 제한 되 그렇지 않으면 _mkgmtime32.

참고 gmtimelocaltime 변환에 대 한 단일 정적으로 할당 된 버퍼를 사용 합니다.이 버퍼를 제공 하는 경우 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

다음 예제에서는 불완전 한구조체는 요일 및 연도 일 계산 된 값으로 채우는 방법을을 보여 줍니다.

// 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 );

}

Output

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