Defined in header <time.h> | ||
---|---|---|
char* ctime( const time_t* time ); | (1) | |
errno_t ctime_s(char *buffer, rsize_t bufsz, const time_t *time); | (2) | (since C11) |
1) Converts given time since epoch to a calendar local time and then to a textual representation, as if by calling
asctime(localtime(time))
. 2) Same as (1), except that the function is equivalent to
asctime_s(buffer, bufsz, localtime_s(time, &(struct tm){0}))
, and the following errors are detected at runtime and call the currently installed constraint handler function: -
-
buffer
ortime
is a null pointer -
bufsz
is less than26
or greater thanRSIZE_MAX
-
- As with all bounds-checked functions,
ctime_s
is only guaranteed to be available if__STDC_LIB_EXT1__
is defined by the implementation and if the user defines__STDC_WANT_LIB_EXT1__
to the integer constant1
before includingtime.h
.
The resulting string has the following format:
Www Mmm dd hh:mm:ss yyyy\n
-
Www
- the day of the week (one ofMon
,Tue
,Wed
,Thu
,Fri
,Sat
,Sun
). -
Mmm
- the month (one ofJan
,Feb
,Mar
,Apr
,May
,Jun
,Jul
,Aug
,Sep
,Oct
,Nov
,Dec
). -
dd
- the day of the month -
hh
- hours -
mm
- minutes -
ss
- seconds -
yyyy
- years
The function does not support localization.
Parameters
time | - | pointer to a time_t object specifying the time to print |
buffer | - | pointer to an element of a char array of size at least bufsz |
bufsz | - | max number of bytes to output, typically the size of the buffer pointed to by buffer |
Return value
1) pointer to a static null-terminated character string holding the textual representation of date and time. The string may be shared between
asctime
and ctime
, and may be overwritten on each invocation of any of those functions. 2) zero on success (in which case the string representatino of time has been written out to the array pointed to by
buffer
), or non-zero on failure (in which case, the terminating null character is always written to buffer[0]
unless buffer
is a null pointer or bufsz
is zero or greater than RSIZE_MAX.Notes
ctime
returns a pointer to static data and is not thread-safe. In addition, it modifies the static tm
object which may be shared with gmtime
and localtime
. POSIX marks this function obsolete and recommends strftime
instead. The C standard also recommends strftime
instead of ctime
and ctime_s
because strftime
is more flexible and locale-sensitive.
The behavior of ctime
may be undefined for the values of time_t that result in the string longer than 25 characters (e.g. year 10000).
Example
#define __STDC_WANT_LIB_EXT1__ 1 #include <time.h> #include <stdio.h> int main(void) { time_t result = time(NULL); printf("%s", ctime(&result)); #ifdef __STDC_LIB_EXT1__ char str[26]; ctime_s(str,sizeof str,&result); printf("%s", str); #endif }
Output:
Tue May 26 21:51:03 2015 Tue May 26 21:51:03 2015
References
- C11 standard (ISO/IEC 9899:2011):
- 7.27.3.2 The ctime function (p: 393)
- K.3.8.2.2 The ctime_s function (p: 626)
- C99 standard (ISO/IEC 9899:1999):
- 7.23.3.2 The ctime function (p: 342)
- C89/C90 standard (ISO/IEC 9899:1990):
- 4.12.3.2 The ctime function
See also
(C11) | converts a tm object to a textual representation (function) |
converts a tm object to custom textual representation (function) | |
C++ documentation for ctime |
Please login to continue.