time.h header file in C with Examples
Last Updated :
12 Jul, 2025
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.
- clock_t: clock_t represents the processor time and is used to measure the CPU clock cycles.
- time_t: time_t represents the clock time as an integer which shows the number of seconds since the beginning of the Unix Period( 1st January, 1970), which is a part of the calendar time.
- 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 realted 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 format day month date hours:minutes:seconds year Eg: Sat Jul 27 11:26:03 2019 time 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:
- The time() function retrieves the current time since the beginning of Unix period( 1st Jan, 1970) in the form of time_t value stores it in the variable pointed by the pointer passed to it as an argument.
- The localtime() function to convert the time retrieved by time() function into local time components such as hours, minutes, seconds, day, month and year. It takes one parameter which is a pointer to a time value that is to be converted in local time.
- The asctime() function to convert the obtained time into a string representation of the local time in a human readable format which is "Day Mon Date HH:MM:SS YYYY\n". The asctime() accepts a pointer to a structure (struct tm) that contains the time component that is to be converted.
Example
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;
}
OutputTue Apr 15 07:22:42 2025
Print Time in UTC (Coordinated Universal Time)
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;
}
OutputTue 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));
}
OutputSum 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;
}
OutputThe number of primes lower than 10, 000 is: 1229
No. of clicks 2837 clicks (0.002837 seconds).
Print Time in hour::minute Format
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;
}
Explore
C Basics
Arrays & Strings
Pointers and Structures
Memory Management
File & Error Handling
Advanced Concepts