time.h header file in C with Examples (original) (raw)

The time.h header file contains definitions of functions to get and manipulate date and time information. It also includes functions, types and macros, which are used by programs to measure time, manipulate dates and format time information. It describes three time-related data types.

  1. **clock_t: clock_t represents the processor time and is used to measure the CPU clock cycles.
  2. **time_t: time_t represents the clock time as an integer which shows the number of seconds since the beginning of the Unix Epoch ( 1st January 1970, UTC), which is a part of the calendar time.
  3. **struct tm: struct tm holds the components of date and time such as hours, minutes, seconds, day, month, year. The struct tm contains: C `

struct tm { // seconds, range 0 to 59 int tm_sec;

// minutes, range 0 to 59
int tm_min;

// hours, range 0 to 23
int tm_hour;

// day of the month, range 1 to 31
int tm_mday;

// month, range 0 to 11
int tm_mon;

// The number of years since 1900
int tm_year;

// day of the week, range 0 to 6
int tm_wday;

// day in the year, range 0 to 365
int tm_yday;

// daylight saving time
int tm_isdst;

}

`

The **time.h header file contains time related operations like getting the current time, converting between different time formats. It also contains **CLOCKS_PER_SEC macro which holds the number of times does the system clock ticks per second.

**Functions in Time Library

Function Name Explanation
**asctime() This function returns the date and time in the format day month date hours:minutes:seconds year.Eg: Sat Jul 27 11:26:03 2019.asctime() function returns a string by taking struct tm variable as a parameter.
**clock() This function returns the processor time consumed by a program
**ctime() This function returns the date and time in the formatday month date hours:minutes:seconds yearEg: Sat Jul 27 11:26:03 2019time is printed based on the pointer returned by Calendar Time
**difftime() This function returns the difference between the times provided.
**gmtime() This function prints the UTC (Coordinated Universal Time) Time and date.Format for both gmtime() and asctime() is same
**mktime() This function returns the calendar-time equivalent using struct tm.
**time() This function returns the calendar-time equivalent using data-type time_t.
**strftime() This function helps to format the string returned by other time functions using different format specifiers

Get Current Date and Time

To get the current date and time we use the combination of time() , **localtime(), and **asctime() functions as shown:

**Example: C program to get current local time

C `

#include <stdio.h> #include <time.h>

int main() {

// Structure to store local time
struct tm* ptr;

// Variable to store current time
time_t t;

// Get current time
t = time(NULL);

// Convert it to local time
ptr = localtime(&t);

// Get the string of local time
printf("%s", asctime(ptr));
return 0;

}

`

Output

Tue Apr 15 07:22:42 2025

To print the UTC time, we use the **gmtime() function that converts the time obtained by the time() function into a Coordinated Universal Time (also known as Greenwich Mean Time).

C `

#include <stdio.h> #include <time.h>

int main() {

// Structure to store local time
struct tm* ptr;

// Variable to store current time
time_t t;

// Get current time
t = time(NULL);

// Convert it to UTC time
ptr = gmtime(&t);

// Get the string of local time
printf("%s", asctime(ptr));
return 0;

}

`

Output

Tue Apr 15 12:44:17 2025

Find Time Difference

The time difference between the **time_t variables recorded between some time intervals is used to check the execution time of the part of the code.

**Example: The program uses the difftime() functions defined in the time .h header file. This function take two time value as the starting and ending time and return the difference between them.

C `

#include <stdio.h> #include <time.h>

int main() { time_t start, end;

// Record start time
start = time(NULL);
int a, b;
scanf("%d %d", &a, &b);
printf("Sum of %d and %d is %d\n",
       a, b, a + b);
       
// Record endtime
end = time(NULL);

// Print time difference
printf("Time taken to print sum is %.2f seconds",
       difftime(end, start));

}

`

Output

Sum of 0 and 0 is 0 Time taken to print sum is 0.00 seconds

**Note: If user gives input slowly that time also add up for total execution time.

**Time using CPU Clock

The program uses clock() function defined in time.h which is used to find the number of clock ticks during the executions of a code. Which allows us to measure the time taken by CPU to execute the code.

C `

#include <math.h> #include <stdio.h> #include <time.h>

int frequency_of_primes(int n) { // This function checks the number of // primes less than the given parameter int i, j; int freq = n - 1; for (i = 2; i <= n; ++i) for (j = sqrt(i); j > 1; --j) if (i % j == 0) { --freq; break; } return freq; }

int main() { clock_t t; int f; t = clock(); f = frequency_of_primes(9999); printf("The number of primes lower" " than 10, 000 is: %d\n", f); t = clock() - t; printf("No. of clicks %ld clicks (%f seconds).\n", t, ((float)t) / CLOCKS_PER_SEC); return 0; }

`

Output

The number of primes lower than 10, 000 is: 1229 No. of clicks 2837 clicks (0.002837 seconds).

The program uses strftime() function which formats the date and time as string according to the specified format by the user. To define the format for the time the string uses format specifiers such as %l for hour in 12 hour format, %M for minutes and %p to for AM or PM.

C `

#include <stdio.h> #include <time.h> int main() { time_t rawtime; struct tm* timeinfo;

// Used to store the time
// returned by localtime() function
char buffer[80];

time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(buffer, 80,
         "Time is %I:%M %p.",
         timeinfo);

// strftime() function stores the
// current time as Hours : Minutes
//%I %M and %p-> format specifier
// of Hours minutes and am/pm respectively*/

// prints the formatted time
puts(buffer);

return 0;

}

`