Determines the time represented by a struct tm value #include <time.h> time_t mktime ( struct tm *timeptr ); The mktime( ) function calculates the local calendar time represented by the member values in the object referenced by the pointer argument. The type struct tm is defined in time.h as follows:
struct tm {
int tm_sec; /* Seconds (0-60; 1 leap second) */
int tm_min; /* Minutes (0-59) */
int tm_hour; /* Hours (0-23) */
int tm_mday; /* Day (1-31) */
int tm_mon; /* Month (0-11) */
int tm_year; /* Year (difference from 1900) */
int tm_wday; /* Day of week (0-6) */
int tm_yday; /* Day of year (0-365) */
int tm_isdst; /* Daylight saving time (-1, 0, 1) */
};
The member tm_isdst is equal to 0 if daylight saving time is not in effect, or 1 if it is. A negative value indicates that the information is not available, in which case mktime( ) attempts to calculate whether daylight saving time is applicable at the time represented by the other members. The mktime( ) function ignores the tm_wday and tm_yday members in determining the time, but does use tm_isdst. The other members may contain values outside their normal ranges. Once it has calculated the time represented, mktime( ) adjusts the struct tm members so that each one is within its normal range, and also sets tm_wday and tm_yday accordingly. The return value is the number of seconds from the epoch (usually midnight on January 1, 1970, UTC) to the time represented in the structure, or -1 to indicate an error. Example
time_t seconds;
struct tm sometime;
sometime.tm_sec = 10;
sometime.tm_min = 80;
sometime.tm_hour = 40;
sometime.tm_mday = 23;
sometime.tm_mon = 1;
sometime.tm_year = 105;
sometime.tm_wday = 11;
sometime.tm_yday = 111;
sometime.tm_isdst = -1;
seconds = mktime( &sometime );
if ( seconds == -1 )
{
printf( "mktime( ) couldn't make sense of its input.\n" );
return -1;
}
printf( "The return value, %ld, represents %s",
(long)seconds, ctime(&seconds) );
printf( "The structure has been adjusted as follows:\n"
"tm_sec == %d\n"
"tm_min == %d\n"
"tm_hour == %d\n"
"tm_mday == %d\n"
"tm_mon == %d\n"
"tm_year == %d\n"
"tm_wday == %d\n"
"tm_yday == %d\n"
"tm_isdst == %d\n",
sometime.tm_sec,
sometime.tm_min,
sometime.tm_hour,
sometime.tm_mday,
sometime.tm_mon,
sometime.tm_year,
sometime.tm_wday,
sometime.tm_yday,
sometime.tm_isdst );
printf( "The structure now represents %s", asctime( &sometime ));
}
This program produces the following output: The return value, 1109262010, represents Thu Feb 24 17:20:10 2005 The structure has been adjusted as follows: tm_sec == 10 tm_min == 20 tm_hour == 17 tm_mday == 24 tm_mon == 1 tm_year == 105 tm_wday == 4 tm_yday == 54 tm_isdst == 0 The structure now represents Thu Feb 24 17:20:10 2005 See Alsoasctime( ), ctime( ), localtime( ), gmtime( ), strftime( ) |