mktime() — 로컬 시간 변환

형식

#include <time.h>
time_t mktime(struct tm *time);

언어 레벨

ANSI

스레드세이프

로케일 감지

이 함수의 작동은 현재 로케일의 LC_TOD 범주에 영향을 받을 수 있습니다.

설명

mktime() 함수는 time에서 지정한 저장된 tm 구조 (작업 로컬 시간에 있을 것으로 가정)을 다른 시간 함수와 함께 사용하기에 적절한 time_t 구조로 변환합니다. 변환 후, time_t 구조는 협정 세계시(UTC)로 고려됩니다. 이 변환의 경우, mktime()은 로컬 시간대와 일광 절약 시간(DST)를 위한 현재 로케일 설정을 확인합니다. 이 값이 현재 로케일에 설정되지 않으면, mktime()은 현재 작업으로부터 로컬 시간대와 일광 절약 시간(DST) 설정을 얻습니다. DST가 로케일에 설정되지만 시간대 정보가 설정되지 않은 경우, 로케일의 DST 정보가 무시됩니다. 그런 다음 mktime()은 현재 시간대 정보를 사용하여 UTC를 판별합니다.

time에서 지정한 일부 구조 요소의 값은 gmtime()에 대해 표시된 범위로 제한되지 않습니다.

mktime()으로 전달된 tm_wdaytm_yday의 값은 무시되며 리턴 시 올바른 값을 지정합니다.

tm_isdst에 대한 양수 또는 0 값으로 mktime()은 초기에 DST가 각각 지정된 시간에 유효하거나 유효하지 않다고 가정합니다. tm_isdst에 대한 음수 값으로 mktime()은 DST가 지정된 값에 대해 유효한지 여부를 판별하려고 합니다.

리턴값

mktime() 함수는 time_t를 포함하는 협정 세계시(UTC)를 반환합니다. 협정 세계시를 표시할 수 없으면 값 (time_t)(-1)이 리턴됩니다.

이 예는 현재 날짜로부터 40일 16시간인 요일을 출력합니다.
#include <stdio.h>
#include <time.h>
 
char *wday[] = { "Sunday", "Monday", "Tuesday", "Wednesday",
                 "Thursday", "Friday", "Saturday" };
 
int main(void)
{
  time_t t1, t3;
  struct tm *t2;
 
  t1 = time(NULL);
  t2 = localtime(&t1);
  t2 -> tm_mday += 40;
  t2 -> tm_hour += 16;
  t3 = mktime(t2);
 
  printf("40 days and 16 hours from now, it will be a %s \n",
          wday[t2 -> tm_wday]);
}
 
/*******************  Output should be similar to:  ***************
 
40 days and 16 hours from now, it will be a Sunday
*/