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_wday
tm_yday
timeptr
원래 값은 무시되며 다른 구성 요소의 원래 값은 해당 일반 범위로 제한되지 않습니다.
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_wday
및 tm_yday
의 값을 적절하게 설정하고, 지정한 달력 시간을 표현하도록 다른 구성 요소를 설정하지만 해당 값을 강제로 정상 범위 내에 있도록 합니다. 최종 값 tm_mday
은 결정될 때까지 tm_mon
tm_year
설정되지 않습니다. tm
구조 시간을 지정하면 tm_isdst
필드를 다음과 같이 설정합니다.
0은 표준 시간이 적용 중임을 나타냅니다.
0보다 큰 값은 일광 절약 시간이 적용 중임을 나타냅니다.
0보다 작은 값은 C 런타임 라이브러리 코드가 표준 시간 또는 일광 절약 시간이 적용 중인지 여부를 컴퓨팅하도록 합니다.
C 런타임 라이브러리는 환경 변수에서 일광 절약 시간 동작을 TZ
결정합니다. 설정되지 않은 경우 TZ
Win32 API 호출 GetTimeZoneInformation
은 운영 체제에서 일광 절약 시간 정보를 가져오는 데 사용됩니다. 호출이 실패하면 라이브러리는 일광 절약 시간 계산을 구현하기 위한 미국 규칙이 사용된다고 가정합니다. tm_isdst
는 필수 필드입니다. 이 필드를 설정하지 않으면 해당 값이 정의되지 않고 이러한 함수의 반환 값을 예측할 수 없습니다. 이전 호출 asctime
gmtime
또는 (또는 localtime
이러한 함수의 변형)tm_isdst
에서 반환된 구조를 가리키는 tm
경우 timeptr
필드에 올바른 값이 포함됩니다.
및 localtime
(및_gmtime32
, _gmtime64
_localtime32
및_localtime64
) 함수는 gmtime
변환을 위해 스레드당 단일 버퍼를 사용합니다. 이 버퍼를 mktime
, _mktime32
또는 _mktime64
에 제공하면 이전 내용이 소멸됩니다.
이러한 함수는 해당 함수 매개 변수의 유효성을 검사합니다. timeptr
이 Null 포인터인 경우 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용한 경우 이러한 함수가 -1을 반환하고 errno
를 EINVAL
로 설정합니다.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 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