Defined in header <ctime> | ||
---|---|---|
std::time_t mktime( std::tm* time ); |
Converts local calendar time to a time since epoch as a time_t
object. time->tm_wday
and time->tm_yday
are ignored. The values in time
are permitted to be outside their normal ranges.
A negative value of time->tm_isdst
causes mktime
to attempt to determine if Daylight Saving Time was in effect.
If the conversion is successful, the time
object is modified. All fields of time
are updated to fit their proper ranges. time->tm_wday
and time->tm_yday
are recalculated using information available in other fields.
time | - | pointer to a std::tm object specifying local calendar time to convert |
Time since epoch as a std::time_t
object on success or -1
if time
cannot be represented as a std::time_t
object.
If the std::tm
object was obtained from std::get_time
or the POSIX strptime
, the value of tm_isdst
is indeterminate, and needs to be set explicitly before calling mktime
.
Construct a local time explicitly.
#include <iostream> #include <sstream> #include <iomanip> #include <ctime> int main() { setenv("TZ", "/usr/share/zoneinfo/America/Los_Angeles", 1); // POSIX-specific std::tm tm{}; // zero initialise tm.tm_year = 2020-1900; // 2020 tm.tm_mon = 2-1; // February tm.tm_mday = 15; // 15th tm.tm_hour = 10; tm.tm_min = 15; tm.tm_isdst = 0; // Not daylight saving std::time_t t = std::mktime(&tm); std::tm local = *std::localtime(&t); std::cout << "local: " << std::put_time(&local, "%c %Z") << '\n'; }
Possible output:
local: Sat Feb 15 10:15:00 2020 PST
converts time since epoch to calendar time expressed as local time (function) |
|
C documentation for mktime |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/chrono/c/mktime