Difference between revisions of "cpp/chrono/c/mktime"
m (also comment about it) |
(+note on tm_isdst) |
||
Line 18: | Line 18: | ||
===Return value=== | ===Return value=== | ||
Time since epoch as a {{lc|std::time_t}} object on success or {{c|-1}} if {{tt|time}} cannot be represented as a {{lc|std::time_t}} object. | Time since epoch as a {{lc|std::time_t}} object on success or {{c|-1}} if {{tt|time}} cannot be represented as a {{lc|std::time_t}} object. | ||
+ | |||
+ | ===Notes=== | ||
+ | If the {{lc|std::tm}} object was obtained from {{lc|std::get_time}} or the POSIX [http://pubs.opengroup.org/onlinepubs/009695399/functions/strptime.html strptime]], the value of {{tt|tm_isdst}} is indeterminate, and needs to be set explicitly before calling {{tt|mktime}}. | ||
===Example=== | ===Example=== |
Revision as of 08:52, 12 June 2014
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.
Contents |
Parameters
time | - | pointer to a std::tm object specifying local calendar time to convert |
Return value
Time since epoch as a std::time_t object on success or -1 if time
cannot be represented as a std::time_t object.
Notes
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
.
Example
Display the time 100 months ago
#include <iostream> #include <iomanip> #include <ctime> int main() { std::time_t t = std::time(NULL); std::tm tm = *std::localtime(&t); std::cout << "Today is " << std::put_time(&tm, "%c %Z") <<'\n'; tm.tm_mon -= 100; // tm_mon is now outside its normal range std::mktime(&tm); std::cout << "100 months ago was " << std::put_time(&tm, "%c %Z") << '\n'; }
Output:
Today is Wed Dec 28 09:56:10 2011 EST 100 months ago was Thu Aug 28 10:56:10 2003 EDT
See also
converts time since epoch to calendar time expressed as local time (function) | |
C documentation for mktime
|