Defined in header <time.h> | ||
|---|---|---|
| (1) | ||
char* asctime( const struct tm* time_ptr ); | (until C23) | |
[[deprecated]] char* asctime( const struct tm* time_ptr ); | (since C23) | |
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.| This function is deprecated and should not be used in new code. | (since C23) |
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 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).asctime 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
|
(deprecated in C23)(C11) | converts a time_t object to a textual representation (function) |
converts a tm object to custom textual representation (function) |
|
C++ documentation for asctime |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/chrono/asctime