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
에 제공하면 이전 내용이 소멸됩니다.
이러한 함수는 해당 함수 매개 변수의 유효성을 검사합니다. null 포인터인 경우 timeptr
매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용한 경우 이러한 함수가 -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
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기