The C/C++ standard library defines several functions that deal with the date and time. It also defines functions that handle the geopolitical information associated with a program. These functions are described here.
In C, the time and date functions require the header <time.h>. For C++, the header is <ctime>. For ease of discussion, this chapter will use the C header name, but references to <time.h> also apply to <ctime>.
In <time.h> are defined three time-related types: clock_t, time_t, and tm. The types clock_t and time_t are capable of representing the system time and date as some sort of integer. This is called the calendar time. The structure type tm holds the date and time broken down into its elements. The tm structure contains the following members:
int tm_sec; /* seconds, 0-61 */ int tm_min; /* minutes, 0-59 */ int tm_hour; /* hours, 0-23 */ int tm_mday; /* day of the month, 1-31 */ int tm_mon; /* months since Jan, 0-11 */ int tm_year; /* years from 1900 */ int tm_wday; /* days since Sunday, 0-6 */ int tm_yday; /* days since Jan 1, 0-365 */ int tm_isdst /* Daylight Saving Time indicator */
The value of tm_isdst will be positive if Daylight Saving Time is in effect, zero if it is not in effect, and negative if there is no information available. This form of the time and date is called the broken-down time.
In addition, <time.h> defines the macro CLOCKS_PER_SEC, which is the number of system clock ticks per second.
The geopolitical environmental functions require the C header <locale.h> or the C++ header <clocale>. It defines the structure lconv, which is described under the function localeconv( ).