mktime
|
헤더 파일에 정의됨
<time.h>
|
||
지역 캘린더 시간을 struct tm 객체로 표현된 형태로 재정규화하고 동시에 epoch 이후 시간으로 time_t 객체로 변환합니다. arg - > tm_wday 와 arg - > tm_yday 는 무시됩니다. arg 내의 값들은 범위를 벗어나는지 검사되지 않습니다.
arg
-
>
tm_isdst
의 음수 값은
mktime
이 지정된 시간에 일광 절약 시간제가 적용되었는지 여부를 판단하도록 시도하게 합니다.
time_t
로의 변환이 성공하면,
arg
객체가 수정됩니다.
arg
의 모든 필드는 적절한 범위에 맞게 업데이트됩니다.
arg
-
>
tm_wday
와
arg
-
>
tm_yday
는 다른 필드에서 사용 가능한 정보를 사용하여 재계산됩니다.
목차 |
매개변수
| arg | - | 변환할 지역 달력 시간을 지정하는 tm 객체에 대한 포인터 |
반환값
에포크 이후의 시간을 time_t 객체로 반환합니다. 성공 시에는 해당 시간을, - 1 를 반환합니다. 이는 arg 가 time_t 객체로 표현될 수 없는 경우입니다 (POSIX는 이 경우 EOVERFLOW 가 errno 에 저장되어야 함을 요구합니다).
참고 사항
만약
struct
tm
객체가 POSIX
strptime
또는 이에 상응하는 함수로부터 얻어진 경우,
tm_isdst
값은 불확정적이므로,
mktime
을 호출하기 전에 명시적으로 설정해야 합니다.
예제
#define _POSIX_C_SOURCE 200112L // for setenv on gcc #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { setenv("TZ", "/usr/share/zoneinfo/America/New_York", 1); // POSIX-specific struct tm tm = *localtime(&(time_t){time(NULL)}); printf("Today is %s", asctime(&tm)); printf("(DST is %s)\n", tm.tm_isdst ? "in effect" : "not in effect"); tm.tm_mon -= 100; // tm_mon is now outside its normal range mktime(&tm); // tm_isdst is not set to -1; today's DST status is used printf("100 months ago was %s", asctime(&tm)); printf("(DST was %s)\n", tm.tm_isdst ? "in effect" : "not in effect"); }
가능한 출력:
Today is Fri Apr 22 11:53:36 2016 (DST is in effect) 100 months ago was Sat Dec 22 10:53:36 2007 (DST was not in effect)
참고문헌
- C23 표준 (ISO/IEC 9899:2024):
-
- 7.27.2.3 mktime 함수 (p: TBD)
- C17 표준 (ISO/IEC 9899:2018):
-
- 7.27.2.3 mktime 함수 (p: 285-286)
- C11 표준 (ISO/IEC 9899:2011):
-
- 7.27.2.3 mktime 함수 (p: 390-391)
- C99 표준 (ISO/IEC 9899:1999):
-
- 7.23.2.3 mktime 함수 (p: 340-341)
- C89/C90 표준 (ISO/IEC 9899:1990):
-
- 4.12.2.3 mktime 함수
참고 항목
|
(C23)
(C11)
|
에포크 이후 시간을 현지 시간으로 표현된 달력 시간으로 변환
(함수) |
|
C++ documentation
for
mktime
|
|