mktime64() — 로컬 시간 변환

형식

#include <time.h>
time64_t mktime64(struct tm *time);

언어 레벨

ILE C 확장

스레드세이프

로케일 감지

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

설명

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

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

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

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

참고: 이 함수에 대해 지원되는 날짜 및 시간 범위는 01/01/1970 00:00:00에서 12/31/9999 23:59:59입니다.

리턴값

mktime64() 함수는 유형 time64_t를 포함하는 협정 세계시(UTC)를 리턴합니다. 협정 세계시를 표시할 수 없거나 지정된 시간이 범위 밖인 경우 값 (time_t)(-1)이 리턴됩니다. 지정된 시간이 범위 밖인 경우, errno는 EOVERFLOW로 설정됩니다.

이 예는 현재 날짜로부터 40일 16시간인 요일을 출력합니다.
#include <stdio.h>
#include <time.h>
 
char *wday[] = { "Sunday", "Monday", "Tuesday", "Wednesday",
                 "Thursday", "Friday", "Saturday" };
 
int main(void)
{
  time64_t t1, t3;
  struct tm *t2;
 
  t1 = time64(NULL);
  t2 = localtime64(&t1);
  t2 -> tm_mday += 40;
  t2 -> tm_hour += 16;
  t3 = mktime64(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
*/