You can invoke the time(0) function to return the current time.
The problem is to develop a program that displays the current time in GMT (Greenwich Mean Time) in the format hour:minute:second, such as 13:19:8.
The time(0) function, in the ctime header file, returns the current time in seconds elapsed since the time 00:00:00 on January 1, 1970 GMT, as shown in Figure 2.1. This time is known as the UNIX epoch. The epoch is the point when time starts. 1970 was the year when the UNIX operating system was formally introduced.
Figure 2.1 Invoking time(0) returns the number of seconds since the Unix epoch
You can use this function to obtain the current time, and then compute the current second, minute, and hour as follows:
- Obtain the total seconds since midnight, January 1, 1970, in totalSeconds by invoking time(0) (e.g., 1203183086 seconds).
- Compute the current second from totalSeconds % 60 (e.g., 1203183086 seconds % 60 = 26, which is the current second).
- Obtain the total minutes totalMinutes by dividing totalSeconds by 60 (e.g., 1203183086 seconds / 60 = 20053051 minutes).
- Compute the current minute from totalMinutes % 60 (e.g., 20053051 minutes % 60 = 31, which is the current minute).
- Obtain the total hours totalHours by dividing totalMinutes by 60 (e.g., 20053051 minutes / 60 = 334217 hours).
- Compute the current hour from totalHours % 24 (e.g., 334217 hours % 24 = 17, which is the current hour).
Listing 2.9 shows the complete program followed by a sample run.
Listing 2.9 ShowCurrentTime.cpp
1 #include <iostream>
2 #include <ctime>
3 using namespace std;
4
5 int main()
6 {
7 // Obtain the total seconds since the midnight, Jan 1, 1970
8 int totalSeconds = time(0);
9
10 // Compute the current second in the minute in the hour
11 int currentSecond = totalSeconds % 60;
12
13 // Obtain the total minutes
14 int totalMinutes = totalSeconds / 60;
15
16 // Compute the current minute in the hour
17 int currentMinute = totalMinutes % 60;
18
19 // Obtain the total hours
20 int totalHours = totalMinutes / 60;
21
22 // Compute the current hour
23 int currentHour = totalHours % 24;
24
25 // Display results
26 cout << “Current time is ” << currentHour << “:”
27 << currentMinute << “:” << currentSecond << ” GMT” << endl;
28
29 return 0;
30 }
When time(0) (line 8) is invoked, it returns the difference, measured in seconds, between the current GMT and midnight, January 1, 1970 GMT.
Source: Liang Y. Daniel (2013), Introduction to programming with C++, Pearson; 3rd edition.