mktime
Defined in header
<time.h>
|
||
Renormalizes local calendar time expressed as a struct tm object and also converts it to time since epoch as a time_t object. arg - > tm_wday and arg - > tm_yday are ignored. The values in arg are not checked for being out of range.
A negative value of
arg
-
>
tm_isdst
causes
mktime
to attempt to determine if Daylight Saving Time was in effect in the specified time.
If the conversion to
time_t
is successful, the
arg
object is modified. All fields of
arg
are updated to fit their proper ranges.
arg
-
>
tm_wday
and
arg
-
>
tm_yday
are recalculated using information available in other fields.
Parameters
arg | - | pointer to a tm object specifying local calendar time to convert |
Return value
time since epoch as a
time_t
object on success, or
-
1
if
arg
cannot be represented as a
time_t
object (POSIX also requires
EOVERFLOW
to be stored in
errno
in this case).
Notes
If the
struct
tm
object was obtained from POSIX
strptime
or equivalent function, the value of
tm_isdst
is indeterminate, and needs to be set explicitly before calling
mktime
.
Example
#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"); }
Possible output:
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)
References
- C23 standard (ISO/IEC 9899:2024):
-
- 7.27.2.3 The mktime function (p: TBD)
- C17 standard (ISO/IEC 9899:2018):
-
- 7.27.2.3 The mktime function (p: 285-286)
- C11 standard (ISO/IEC 9899:2011):
-
- 7.27.2.3 The mktime function (p: 390-391)
- C99 standard (ISO/IEC 9899:1999):
-
- 7.23.2.3 The mktime function (p: 340-341)
- C89/C90 standard (ISO/IEC 9899:1990):
-
- 4.12.2.3 The mktime function
See also
(C23)
(C11)
|
converts time since epoch to calendar time expressed as local time
(function) |
C++ documentation
for
mktime
|