Defined in header <time.h> | ||
---|---|---|
char* asctime( const struct tm* time_ptr ); | (1) | |
errno_t asctime_s(char *buf, rsize_t bufsz, const struct tm *time_ptr); | (2) | (since C11) |
tm
to a textual representation of the following fixed 25-character form: Www Mmm dd hh:mm:ss yyyy\n
Www
- three-letter English abbreviated day of the week from time_ptr->tm_wday
, one of Mon
, Tue
, Wed
, Thu
, Fri
, Sat
, Sun
. Mmm
- three-letter English abbreviated month name from time_ptr->tm_mon
, one of Jan
, Feb
, Mar
, Apr
, May
, Jun
, Jul
, Aug
, Sep
, Oct
, Nov
, Dec
. dd
- 2-digit day of the month from timeptr->tm_mday
as if printed by sprintf
using %2d
hh
- 2-digit hour from timeptr->tm_hour
as if printed by sprintf
using %.2d
mm
- 2-digit minute from timeptr->tm_min
as if printed by sprintf
using %.2d
ss
- 2-digit second from timeptr->tm_sec
as if printed by sprintf
using %.2d
yyyy
- 4-digit year from timeptr->tm_year + 1900
as if printed by sprintf
using %4d
*time_ptr
is outside its normal rangetime_ptr->tm_year
has more than 4 digits or is less than the year 1000.buf
, which is guaranteed to be null-terminated, and the following errors are detected at runtime and call the currently installed constraint handler function: buf
or time_ptr
is a null pointer bufsz
is less than 26 or greater than RSIZE_MAX
*time_ptr
are within their normal ranges time_ptr->tm_year
is less than 0 or greater than 9999 asctime_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 constant 1 before including time.h
.time_ptr | - | pointer to a tm object specifying the time to print |
buf | - | pointer to a user-supplied buffer at least 26 bytes in length |
bufsz | - | size of the user-supplied buffer |
asctime
and ctime
, and may be overwritten on each invocation of any of those functions.buf[0]
is set to zero (unless buf
is a null pointer or bufsz
is zero or greater than RSIZE_MAX
).This function returns a pointer to static data and is not thread-safe. POSIX marks this function obsolete and recommends strftime
instead. The C standard also recommends strftime
instead of asctime
and asctime_s
because strftime
is more flexible and locale-sensitive.
POSIX limits undefined behaviors only to when the output string would be longer than 25 characters, when timeptr->tm_wday
or timeptr->tm_mon
are not within the expected ranges, or when timeptr->tm_year
exceeds INT_MAX-1990
.
Some implementations handle timeptr->tm_mday==0
as meaning the last day of the preceding month.
#define __STDC_WANT_LIB_EXT1__ 1 #include <time.h> #include <stdio.h> int main(void) { struct tm tm = *localtime(&(time_t){time(NULL)}); printf("%s", asctime(&tm)); #ifdef __STDC_LIB_EXT1__ char str[26]; asctime_s(str, sizeof str, &tm); printf("%s", str); #endif }
Possible output:
Tue May 26 21:51:50 2015 Tue May 26 21:51:50 2015
(C11) | converts a time_t object to a textual representation (function) |
converts a tm object to custom textual representation (function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/c/chrono/asctime