The C date and time functions are a group of functions in the standard library of the C programming language implementing date and time manipulation operations.[1] They provide support for time acquisition, conversion between date formats, and formatted output to strings.
The format string used in strftime
traces back to at least PWB/UNIX 1.0, released in 1977. Its date
system command includes various formatting options.[2] [3] In 1989, the ANSI C standard is released including strftime
and other date and time functions.[4]
The C date and time operations are defined in the time.h
header file (ctime
header in C++).
Identifier | Description | |
---|---|---|
Time manipulation | [https://en.cppreference.com/w/c/chrono/difftime difftime] | computes the difference in seconds between two time_t values |
[https://en.cppreference.com/w/c/chrono/time time] | returns the current time of the system as a time_t value, number of seconds, (which is usually time since an epoch, typically the Unix epoch). The value of the epoch is operating system dependent; 1900 and 1970 are often used. See RFC 868. | |
[https://en.cppreference.com/w/c/chrono/clock clock] | returns a processor tick count associated with the process | |
[https://en.cppreference.com/w/c/chrono/timespec_get timespec_get] (C11) | returns a calendar time based on a time base | |
Format conversions | [https://en.cppreference.com/w/c/chrono/asctime asctime] | converts a struct tm object to a textual representation (deprecated) |
[https://en.cppreference.com/w/c/chrono/ctime ctime] | converts a time_t value to a textual representation | |
[https://en.cppreference.com/w/c/chrono/strftime strftime] | converts a struct tm object to custom textual representation | |
[https://linux.die.net/man/3/strptime strptime] | converts a string with time information to a struct tm | |
[https://en.cppreference.com/w/c/chrono/wcsftime wcsftime] | converts a struct tm object to custom wide string textual representation | |
[https://en.cppreference.com/w/c/chrono/gmtime gmtime] | converts a time_t value to calendar time expressed as Coordinated Universal Time[5] | |
[https://en.cppreference.com/w/c/chrono/localtime localtime] | converts a time_t value to calendar time expressed as local time | |
[https://en.cppreference.com/w/c/chrono/mktime mktime] | converts calendar time to a time_t value. | |
Constants | [https://en.cppreference.com/w/c/chrono/CLOCKS_PER_SEC CLOCKS_PER_SEC] | number of processor clock ticks per second |
TIME_UTC | time base for UTC | |
Types | [https://en.cppreference.com/w/c/chrono/tm struct tm] | broken-down calendar time type: year, month, day, hour, minute, second |
[https://en.cppreference.com/w/c/chrono/time_t time_t] | arithmetic time type (typically time since the Unix epoch) | |
[https://en.cppreference.com/w/c/chrono/clock_t clock_t] | process running time type | |
[https://en.cppreference.com/w/c/chrono/timespec timespec] | time with seconds and nanoseconds |
The and related types were originally proposed by Markus Kuhn to provide a variety of time bases, but only was accepted.[6] The functionalities were, however, added to C++ in 2020 in std::chrono.
The following C source code prints the current time to the standard output stream.
int main(void)
The output is: