C date and time functions explained

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.

History

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]

Overview of functions

The C date and time operations are defined in the time.h header file (ctime header in C++).

IdentifierDescription
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_UTCtime 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.

Example

The following C source code prints the current time to the standard output stream.

  1. include
  2. include
  3. include

int main(void)

The output is:Current time is Thu Sep 15 21:18:23 2016

See also

External links

Notes and References

  1. Book: ISO/IEC 9899:1999 specification . p. 351, ยง 7.32.2.
  2. Web site: PWB1 date system command - man page . www.tuhs.org.
  3. Web site: date.c sourcecode of PWB1 . www.tuhs.org.
  4. Web site: Rationale for American National Standard for Information Systems - Programming Language - C - Date and Time . www.lysator.liu.se.
  5. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf open-std.org - Committee Draft -- May 6, 2005
  6. Web site: Markus Kuhn . Modernized API for ISO C . cl.cam.ac.uk.