다음을 통해 공유


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일 이전의 날짜를 참조하거나 해당 달력 시간을 표현할 수 없으면 _mktime32time_t 형식에 대한 -1 캐스트를 반환합니다. _mktime32를 사용하는 경우 timeptr이 2038년 1월 19일 03:14:07 UTC(협정 세계시) 이후 날짜를 참조하면 time_t 형식에 대한 -1 캐스트를 반환합니다.

timeptr이 3000년 12월 31일 23:59:59 UTC 이후 날짜를 참조하면 _mktime64__time64_t 형식에 대한 -1 캐스트를 반환합니다.

설명

mktime, _mktime32_mktime64 함수는 정규화된 값을 사용하여 timeptr로 가리키는 제공된 시간 구조(불완전할 수 있음)를 완전히 정의된 구조로 변환한 다음 time_t 달력 시간 값으로 변환합니다. 변환된 시간은 time 함수가 반환한 값과 인코딩이 동일합니다. timeptr 구조의 tm_wdaytm_yday 구성 요소가 가진 원래 값이 무시되며 다른 구성 요소의 원래 값은 정상 범위로 제한되지 않습니다.

mktime_mktime64와 동일한 인라인 함수로 _USE_32BIT_TIME_T를 정의하지 않으면 _mktime32와 동일합니다.

UTC로 조정 후 _mktime32는 1970년 1월 1일 자정에서 2038년 1월 19일 03:14:07까지의 날짜를 처리합니다. _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_montm_year가 결정될 때까지 tm_mday의 최종 값은 설정되지 않습니다. tm 구조 시간을 지정하면 tm_isdst 필드를 다음과 같이 설정합니다.

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

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

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

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

gmtimelocaltime(그리고 _gmtime32, _gmtime64, _localtime32_localtime64)는 변환을 위해 스레드당 단일 버퍼를 사용합니다. 이 버퍼를 mktime, _mktime32 또는 _mktime64에 제공하면 이전 내용이 소멸됩니다.

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

요구 사항

루틴

필수 헤더

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

해당 .NET Framework 항목

System::DateTime::DateTime

참고 항목

참조

시간 관리

asctime, _wasctime

gmtime, _gmtime32, _gmtime64

localtime, _localtime32, _localtime64

_mkgmtime, _mkgmtime32, _mkgmtime64

time, _time32, _time64