mktime, _mktime32, _mktime64

현지 시간을 달력 값으로 변환합니다.

구문

time_t mktime(
   struct tm *timeptr
);
__time32_t _mktime32(
   struct tm *timeptr
);
__time64_t _mktime64(
   struct tm *timeptr
);

매개 변수

timeptr
시간 구조에 대한 포인터; 를 참조하세요 asctime.

반환 값

_mktime32 는 형식 time_t의 값으로 인코딩된 지정된 달력 시간을 반환합니다. timeptr 1970년 1월 1일 자정 이전의 날짜를 참조하거나 달력 시간을 나타낼 _mktime32 수 없는 경우 -1 캐스트를 형식time_t으로 반환합니다. UTC(협정 세계시) 2038년 1월 18일 23:59:59 이후 날짜를 사용하고 _mktime32 참조하는 경우 timeptr -1 캐스트를 형식 time_t으로 반환합니다.

_mktime64는 3000년 12월 31일 23:59:59 이후의 날짜를 참조하는 경우 timeptr -1 캐스트를 형식 __time64_t 으로 반환합니다.

설명

_mktime32_mktime64 함수는 mktime지정한 제공된 시간 구조(불완전할 수 있음)를 timeptr 정규화된 값이 있는 완전히 정의된 구조로 변환한 다음 달력 시간 값으로 time_t 변환합니다. 변환된 시간에는 함수에서 반환하는 값과 동일한 인코딩이 있습니다 time . 구조체 및 구성 요소의 tm_wdaytm_ydaytimeptr 원래 값은 무시되며 다른 구성 요소의 원래 값은 해당 일반 범위로 제한되지 않습니다.

mktime는 정의되지 않는 한 _USE_32BIT_TIME_T 동일한 _mktime64인라인 함수입니다. 이 경우와 동일합니다_mktime32.

UTC로 조정 후 _mktime32는 UTC로 1970년 1월 1일 자정에서 2038년 1월 18일 오후 11시 59분 59초까지의 날짜를 처리합니다. _mktime64는 1970년 1월 1일 자정에서 3000년 12월 31일 23:59:59까지의 날짜를 처리합니다. 지정한 날짜가 범위 내에 있더라도 이처럼 조정하면 이러한 함수가 -1을 반환할 할 수 있습니다(time_t, __time32_t 또는 __time64_t로 캐스트). 예를 들어 UTC보다 2시간 앞서 있는 이집트 카이로에 있는 경우 먼저 지정 timeptr한 날짜에서 2시간을 빼고 이제 날짜를 범위를 벗어날 수 있습니다.

이러한 함수는 구조체의 유효성을 검사하고 채우는 tm 데 사용할 수 있습니다. 성공하면 이러한 함수는 tm_wdaytm_yday의 값을 적절하게 설정하고, 지정한 달력 시간을 표현하도록 다른 구성 요소를 설정하지만 해당 값을 강제로 정상 범위 내에 있도록 합니다. 최종 값 tm_mday 은 결정될 때까지 tm_montm_year 설정되지 않습니다. tm 구조 시간을 지정하면 tm_isdst 필드를 다음과 같이 설정합니다.

  • 0은 표준 시간이 적용 중임을 나타냅니다.

  • 0보다 큰 값은 일광 절약 시간이 적용 중임을 나타냅니다.

  • 0보다 작은 값은 C 런타임 라이브러리 코드가 표준 시간 또는 일광 절약 시간이 적용 중인지 여부를 컴퓨팅하도록 합니다.

C 런타임 라이브러리는 환경 변수에서 일광 절약 시간 동작을 TZ 결정합니다. 설정되지 않은 경우 TZ Win32 API 호출 GetTimeZoneInformation 은 운영 체제에서 일광 절약 시간 정보를 가져오는 데 사용됩니다. 호출이 실패하면 라이브러리는 일광 절약 시간 계산을 구현하기 위한 미국 규칙이 사용된다고 가정합니다. tm_isdst는 필수 필드입니다. 이 필드를 설정하지 않으면 해당 값이 정의되지 않고 이러한 함수의 반환 값을 예측할 수 없습니다. 이전 호출 asctimegmtime또는 (또는 localtime 이러한 함수의 변형)tm_isdst에서 반환된 구조를 가리키는 tm 경우 timeptr 필드에 올바른 값이 포함됩니다.

localtime (및_gmtime32, _gmtime64_localtime32_localtime64) 함수는 gmtime 변환을 위해 스레드당 단일 버퍼를 사용합니다. 이 버퍼를 mktime, _mktime32 또는 _mktime64에 제공하면 이전 내용이 소멸됩니다.

이러한 함수는 해당 함수 매개 변수의 유효성을 검사합니다. null 포인터인 경우 timeptr 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용한 경우 이러한 함수가 -1을 반환하고 errnoEINVAL로 설정합니다.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT의 전역 상태를 참조하세요.

요구 사항

루틴에서 반환된 값 필수 헤더
mktime <time.h>
_mktime32 <time.h>
_mktime64 <time.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

라이브러리

모든 버전의 C 런타임 라이브러리입니다.

예시

// crt_mktime.c
/* The example takes a number of days
* as input and returns the time, the current
* date, and the specified number of days.
*/

#include <time.h>
#include <stdio.h>

int main( void )
{
   struct tm  when;
   __time64_t now, result;
   int        days;
   char       buff[80];

   time( &now );
   _localtime64_s( &when, &now );
   asctime_s( buff, sizeof(buff), &when );
   printf( "Current time is %s\n", buff );
   days = 20;
   when.tm_mday = when.tm_mday + days;
   if( (result = mktime( &when )) != (time_t)-1 ) {
      asctime_s( buff, sizeof(buff), &when );
      printf( "In %d days the time will be %s\n", days, buff );
   } else
      perror( "mktime failed" );
}

샘플 출력

Current time is Fri Apr 25 13:34:07 2003

In 20 days the time will be Thu May 15 13:34:07 2003

참고 항목

시간 관리
asctime, _wasctime
gmtime, _gmtime32, _gmtime64
localtime, _localtime32, _localtime64
_mkgmtime, _mkgmtime32, _mkgmtime64
time, _time32, _time64