_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_wday 및 tm_yday 필드의 값을 기준으로 새 값으로 설정 됩니다 tm_mday 및 tm_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.
참고 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
다음 예제에서는 불완전 한구조체는 요일 및 연도 일 계산 된 값으로 채우는 방법을을 보여 줍니다.
// 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
참고 항목
참조
gmtime_s, _gmtime32_s, _gmtime64_s