Open In App

time.h header file in C with Examples

Last Updated : 16 Apr, 2025
Summarize
Comments
Improve
Suggest changes
Share
Like Article
Like
Report

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 Period( 1st January, 1970), 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 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 NameExplanation
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;
}

Output
Tue 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;
}

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).

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;
}

Output
Time is 09:00AM.

Article Tags :

Similar Reads