Jump to content

C date and time functions

From Wikipedia, the free encyclopedia

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

[edit]

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

[edit]

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

Identifier Description
Time
manipulation
difftimecomputes the difference in seconds between two time_t values
timereturns 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.
clockreturns a processor tick count associated with the process
timespec_get (C11) returns a calendar time based on a time base
Format
conversions
asctimeconverts a struct tm object to a textual representation (deprecated)
ctimeconverts a time_t value to a textual representation
strftimeconverts a struct tm object to custom textual representation
strptimeconverts a string with time information to a struct tm
wcsftimeconverts a struct tm object to custom wide string textual representation
gmtimeconverts a time_t value to calendar time expressed as Coordinated Universal Time[5]
localtimeconverts a time_t value to calendar time expressed as local time
mktimeconverts calendar time to a time_t value.
Constants CLOCKS_PER_SECnumber of processor clock ticks per second
TIME_UTCtime base for UTC
Types struct tmbroken-down calendar time type: year, month, day, hour, minute, second
time_tarithmetic time type (typically time since the Unix epoch)
clock_tprocess running time type
struct timespectime with seconds and nanoseconds

The timespec and related types were originally proposed by Markus Kuhn to provide a variety of time bases, but only TIME_UTC was accepted.[6] The functionalities were, however, added to C++ in 2020 in std::chrono.

Example

[edit]

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

#include<time.h>#include<stdlib.h>#include<stdio.h>intmain(void){time_tcurrent_time;char*c_time_string;/* Obtain current time. */current_time=time(NULL);if(current_time==((time_t)-1)){(void)fprintf(stderr,"Failure to obtain the current time.\n");exit(EXIT_FAILURE);}/* Convert to local time format. */c_time_string=ctime(&current_time);if(c_time_string==NULL){(void)fprintf(stderr,"Failure to convert the current time.\n");exit(EXIT_FAILURE);}/* Print to stdout. ctime() has already added a terminating newline character. */(void)printf("Current time is %s",c_time_string);exit(EXIT_SUCCESS);}

The output is:

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

See also

[edit]

References

[edit]
  1. ^ISO/IEC 9899:1999 specification(PDF). p. 351, § 7.32.2.
  2. ^"PWB1 date system command - man page". www.tuhs.org.
  3. ^"date.c sourcecode of PWB1". www.tuhs.org.
  4. ^"Rationale for American National Standard for Information Systems - Programming Language - C - Date and Time". www.lysator.liu.se.
  5. ^open-std.org - Committee Draft -- May 6, 2005 page 355
  6. ^Markus Kuhn. "Modernized API for ISO C". cl.cam.ac.uk.
[edit]
close