C date and time functions#time
{{Short description|Library of C programs}}
{{Use dmy dates|date=December 2020}}
{{C Standard Library}}
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.{{cite book | url=http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf | title=ISO/IEC 9899:1999 specification | at=p. 351, § 7.32.2}} 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.{{cite web |title=PWB1 date system command - man page |url=https://www.tuhs.org/cgi-bin/utree.pl?file=PWB1/usr/man/man1/date.1 |website=www.tuhs.org}}{{cite web |title=date.c sourcecode of PWB1 |url=https://www.tuhs.org/cgi-bin/utree.pl?file=PWB1/sys/source/s1/date.c |website=www.tuhs.org}} In 1989, the ANSI C standard is released including strftime
and other date and time functions.{{cite web |title=Rationale for American National Standard for Information Systems - Programming Language - C - Date and Time |url=https://www.lysator.liu.se/c/rat/d12.html#4-12-3-5 |website=www.lysator.liu.se}}
Overview of functions
The C date and time operations are defined in the time.h
header file (ctime
header in C++).
class="wikitable" style="font-size:0.85em"
! ! Identifier ! Description |
id=difftime
! rowspan=4 | Time | | computes the difference in seconds between two |
id=time
| | returns the current time of the system as a |
id=clock
| | returns a processor tick count associated with the process |
id=timespec_get
| | returns a calendar time based on a time base |
id=asctime
! rowspan=8 | Format | | converts a |
id=ctime
| | converts a |
id=strftime
| | converts a |
id=strptime
| | converts a string with time information to a |
id=wcsftime
| | converts a |
id=gmtime
| | converts a |
id=localtime
| | converts a |
id=mktime
| | converts calendar time to a |
id=CLOCKS_PER_SEC
! rowspan=2 | Constants | | number of processor clock ticks per second |
TIME_UTC
| time base for UTC |
id=tm
! rowspan=4 | Types | | broken-down calendar time type: year, month, day, hour, minute, second |
id=time_t
| | arithmetic time type (typically time since the Unix epoch) |
id=clock_t
| | process running time type |
id=timespec
| | time with seconds and nanoseconds |
The {{code|timespec}} and related types were originally proposed by Markus Kuhn to provide a variety of time bases, but only {{code|TIME_UTC}} was accepted.{{cite web |author=Markus Kuhn |title=Modernized API for ISO C |url=https://www.cl.cam.ac.uk/~mgk25/time/c/ |website=cl.cam.ac.uk}} 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.
- include
- include
- include
int main(void)
{
time_t current_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(¤t_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
References
{{reflist}}
External links
{{wikibooks|C Programming|C date and time operations|C Programming/C Reference}}
{{clear}}
{{CProLang|state=expanded}}