COHERENT manpages
This page displays the COHERENT manpage for mktime() [Turn broken-down time into calendar time].
List of available manpages
Index
mktime() -- Time Function (libc) Turn broken-down time into calendar time #include <time.h> time_t mktime(timeptr) struct tm *timeptr; mktime() reads broken-down time from the structure pointed to by timeptr and converts it into calendar time of the type time_t. It does the opposite of the functions localtime() and gmtime(), which turn calendar time into broken-down time. mktime() manipulates the structure tm as follows: 1. It reads the contents of the structure, but ignores the fields tm_wday and tm_yday. 2. The original values of the other fields within the tm structure are not restricted. This allows you, for example, to increment the member tm_hour to discover the calendar time one hour hence, even if that forces the value of tm_hour to be greater than 23, its normal limit. 3. When calculation is completed, the values of the fields within the tm structure are reset to within their normal limits to conform to the newly calculated calendar time. The value of tm_mday is not set until after the values of tm_mon and tm_year. 4. The calendar time is returned. If the calendar time cannot be calculated, mktime returns -1 cast to time_t. Example This example gets the date from the user and writes it into a tm structure. #include <stddef.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #define BAD_TIME ((time_t)-1) /* ask for a number and return it. */ int askint(msg) char *msg; { char buf[20]; printf("Enter %s ", msg); fflush(stdout); if(gets(buf) == NULL) exit(EXIT_SUCCESS); return(atoi(buf)); } main() { struct tm t; for(;;) { t.tm_mon = askint("month") - 1; t.tm_mday = askint("day"); t.tm_year = askint("year") - 1900; t.tm_hour = t.tm_min = t.tm_sec = 1; if(BAD_TIME == mktime(&t)) { printf("Invalid date\n"); continue; } printf("Day of week is %d\n", t.tm_wday); break; } return(EXIT_SUCCESS); } See Also clock(), difftime(), libc, time [overview] ANSI Standard, §7.12.2.3 POSIX Standard, §8.1 Notes The above description may appear to be needlessly complex. However, the Committee intended that mktime() be used to implement a portable mechanism for determining time and for controlling time-dependent loops. This function is needed because not every environment describes time internally as a multiple of a known time unit.