The time library provides a number of functions for obtaining a close approximation of the current time and date, and for comparing times ...
The time library provides a number of functions for obtaining a close approximation of the current time and date, and for comparing times and dates to one another.
The center of this library is a structure, tm, which consists of nine integer values for the second, minute, hour, day of the month, number of the month (where January=0), the number of years since 1900, the day (where Sunday=0), the day of the year (0-365), and a Boolean value establishing whether daylight saving time is in effect. (This last may not be supported on some systems.)
Most time functions expect a variable of type time_t or a pointer to a variable of this type. There are conversion routines to turn such a variable into a tm data structure.
The standard library supplies the function time(), which takes a pointer to a time_t variable and fills it with the current time. It also provides ctime(), which takes the time_t variable filled by time() and returns an ASCII string that can be used for printing. If you need more control over the output, however, you can pass the time_t variable to local_time(), which will return a pointer to a tm structure. Listing 21.5 illustrates these various time functions.
1: #include <time.h>
2: #include <iostream.h>
3:
4: int main()
5: {
6: time_t currentTime;
7:
8: // get and print the current time
9: time (¤tTime); // fill now with the current time
10: cout << "It is now " << ctime(¤tTime) << endl;
11:
12: struct tm * ptm= localtime(¤tTime);
13:
14: cout << "Today is " << ((ptm->tm_mon)+1) << "/";
15: cout << ptm->tm_mday << "/";
16: cout << ptm->tm_year << endl;
17:
18: cout << "\nDone.";
19: return 0;
20: }
Output: It is now Mon Mar 31 13:50:10 1997
Today is 3/31/97
Done.
Analysis: On line 6, CurrentTime is declared to be a variable of type time_t. The address of this variable is passed to the standard time library function time(), and the variable currentTime is set to the current date and time. The address of this variable is then passed to ctime(), which returns an ASCII string that is in turn passed to the cout statement on line 12.The address of currentTime is then passed to the standard time library function localtime(), and a pointer to a tm structure is returned, which is used to initialize the local variable ptm. The member data of this structure is then accessed to print the current month, day of the month, and year.