C - time.h in C
1. What is time.h
?
time.h
is a C standard library header for dealing with date and time.
It provides:
-
Types for representing time values
-
Functions for getting the current time
-
Functions for converting, formatting, and manipulating time
2. Including the Header
#include <time.h>
3. Key Data Types in time.h
Type | Purpose |
---|---|
time_t |
Represents calendar time (seconds since the Epoch: 00:00:00 UTC, Jan 1, 1970) |
struct tm |
Holds a human-readable broken-down time (year, month, day, hour, etc.) |
clock_t |
Represents processor time used by a program (for performance measurement) |
4. Important Constants
Constant | Meaning |
---|---|
CLOCKS_PER_SEC |
Number of clock_t ticks per second (for converting processor time) |
5. Key Functions in time.h
5.1 Getting the Current Time
time_t t;
time(&t); // store current time in t
printf("%ld\n", t); // seconds since Epoch
Shortcut:
time_t t = time(NULL); // directly returns current time
5.2 Converting to Readable Time
time_t t = time(NULL);
char *str = ctime(&t); // converts to human-readable string
printf("Now: %s", str);
Example output:
Now: Thu Aug 14 10:20:30 2025
5.3 Broken-down Time (struct tm
)
You can break a time_t
into components:
struct tm *tm_info = localtime(&t);
printf("%d-%02d-%02d %02d:%02d:%02d\n",
tm_info->tm_year + 1900, // years since 1900
tm_info->tm_mon + 1, // months since Jan (0–11)
tm_info->tm_mday,
tm_info->tm_hour,
tm_info->tm_min,
tm_info->tm_sec);
5.4 Coordinated Universal Time (UTC)
struct tm *tm_utc = gmtime(&t);
Similar to localtime
but gives UTC instead of local time.
5.5 Formatting Time (strftime
)
char buffer[80];
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", tm_info);
printf("Formatted time: %s\n", buffer);
Some common format specifiers:
-
%Y
→ year (e.g., 2025) -
%m
→ month (01–12) -
%d
→ day of month -
%H
→ hour (00–23) -
%M
→ minute -
%S
→ second -
%A
→ weekday name -
%B
→ month name
5.6 Parsing Time Back (mktime
)
Converts a struct tm
to time_t
:
time_t t2 = mktime(tm_info);
Useful for doing date arithmetic.
5.7 Measuring Elapsed Time
clock_t start = clock();
// some code here
clock_t end = clock();
double cpu_time = (double)(end - start) / CLOCKS_PER_SEC;
printf("Time taken: %.5f seconds\n", cpu_time);
6. Summary Table of Common time.h
Functions
Function | Purpose |
---|---|
time |
Get current calendar time |
ctime |
Convert time_t to string |
localtime |
Convert time_t to local broken-down time |
gmtime |
Convert time_t to UTC broken-down time |
strftime |
Format struct tm as a string |
mktime |
Convert struct tm to time_t |
difftime |
Compute difference between two times |
clock |
CPU time used by program |