다음을 통해 공유


_mkgmtime, _mkgmtime32, _mkgmtime64

tm struct 나타나는 UTC 시간이 time_t 형식에 나타나는 UTC시간로 변환됩니다.

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

매개 변수

  • timeptr
    변환하기 위한 struct tm 으로 UTC시간에 대한 포인터입니다.

반환 값

__time32_t 형식의 양 또는 협정 세계시(UTC)에서 1970년 1월 1일 자정에서부터 경과된 시간을 나타내는 __time64_t 입니다. 만일 날짜가 범위를 벗어나거나 (설명 부분 참조) 입력이 올바른 시간으로 해석 될 수 없는 경우, 반환 값은 -1입니다.

설명

_mkgmtime32_mkgmtime64 함수는 UTC시간을 나타내는 __time32_t 또는 __time64_t 으로 시간을 변환합니다. UTC시간으로 현지시간을 변환하기 위해, _mktime64 대신에 mktime, _mktime32 을 사용합니다.

_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 함수의 범위는 UTC 1970 년 1월 1일 자정에서 UTC 2038년 1월 19일, 3시 14분 7초까지입니다. _mkgmtime64 의 범위는 UTC 1970년 1월 1일 자정부터 UTC 3000년 12월 31일 23시 59분 59초까지입니다. 범위를 벗어난 날짜는 -1 값을 결과로 반환합니다. _mkgmtime 의 범위는 _USE_32BIT_TIME_T 이 정의되었는지의 여부에 따라 달라집니다. 정의되지 않은 범위(기본값)가 _mkgmtime64인 경우입니다.; 그렇지 않으면, 범위는 _mkgmtime32 의 32 비트로 제한됩니다.

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