| C standard library (libc) | 
|---|
| General topics | 
| Miscellaneous headers | 
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.
Overview of functions
The C date and time operations are defined in the time.h header file (ctime header in C++).
| Identifier | Description | |
|---|---|---|
| Time manipulation | difftime | computes the difference in seconds between two time_tvalues | 
| time | returns the current time of the system as a time_tvalue, 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. | |
| clock | returns a processor tick count associated with the process | |
| timespec_get(C11) | returns a calendar time based on a time base | |
| Format conversions | asctime | converts a struct tmobject to a textual representation (deprecated) | 
| ctime | converts a time_tvalue to a textual representation | |
| strftime | converts a struct tmobject to custom textual representation | |
| strptime | converts a string with time information to a struct tm | |
| wcsftime | converts a struct tmobject to custom wide string textual representation | |
| gmtime | converts a time_tvalue to calendar time expressed as Coordinated Universal Time[2] | |
| localtime | converts a time_tvalue to calendar time expressed as local time | |
| mktime | converts calendar time to a time_tvalue. | |
| Constants | CLOCKS_PER_SEC | number of processor clock ticks per second | 
| TIME_UTC | time base for UTC | |
| Types | struct tm | broken-down calendar time type: year, month, day, hour, minute, second | 
| time_t | arithmetic time type (typically time since the Unix epoch) | |
| clock_t | process running time type | |
| timespec | time 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.[3] 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 <time.h>
#include <stdlib.h>
#include <stdio.h>
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
- ↑ ISO/IEC 9899:1999 specification (PDF). p. 351, § 7.32.2.
- ↑ open-std.org - Committee Draft -- May 6, 2005 page 355
- ↑ Markus Kuhn. "Modernized API for ISO C". cl.cam.ac.uk.
External links

The Wikibook C Programming has a page on the topic of: C Programming/C Reference
    This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.
