asctime, asctime_s
Defined in header <time.h>
|
||
---|---|---|
|
(1) | |
|
(2) | (since C11) |
1)tm
Www Mmm dd hh:mm:ss yyyy\n
Www
- three-letter English abbreviated day of the week fromtime_ptr->tm_wday
, one ofMon
,Tue
,Wed
,Thu
,Fri
,Sat
,Sun
.Mmm
- three-letter English abbreviated month name fromtime_ptr->tm_mon
, one ofJan
,Feb
,Mar
,Apr
,May
,Jun
,Jul
,Aug
,Sep
,Oct
,Nov
,Dec
.dd
- 2-digit day of the month fromtimeptr->tm_mday
as if printed bysprintf
using%2d
hh
- 2-digit hour fromtimeptr->tm_hour
as if printed bysprintf
using%.2d
mm
- 2-digit minute fromtimeptr->tm_min
as if printed bysprintf
using%.2d
ss
- 2-digit second fromtimeptr->tm_sec
as if printed bysprintf
using%.2d
yyyy
- 4-digit year fromtimeptr->tm_year + 1900
as if printed bysprintf
using%4d
The behavior is undefined if any member of *time_ptr
is outside its normal range
The behavior is undefined if the calendar year indicated by time_ptr->tm_year
has more than 4 digits or is less than the year 1000.
The function does not support localization, and the newline character cannot be removed.
The function modifies static storage and is not thread-safe.
2) Same as (1), except that the message is copied into user-provided storage 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
ortime_ptr
is a null pointerbufsz
is less than 26 or greater thanRSIZE_MAX
- not all members of
*time_ptr
are within their normal ranges - the year indicated by
time_ptr->tm_year
is less than 0 or greater than 9999
As with all bounds-checked functions, 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
.
Parameters
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 |
Return value
1) pointer to a static null-terminated character string holding the textual representation of date and time as described above. 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, non-zero on failure, in which case buf[0]
is set to zero (unless buf
is a null pointer or bufsz
is zero or greater than RSIZE_MAX
).
Notes
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.
Example
#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
References
C11 standard (ISO/IEC 9899:2011):
- 7.27.2.1 The asctime function (p: 392-393)
- K.3.8.2.1 The asctime_s function (p: 624-625)
C99 standard (ISO/IEC 9899:1999):
- 7.23.3.1 The asctime function (p: 341-342)
C89/C90 standard (ISO/IEC 9899:1990):
- 4.12.3.1 The asctime function
See also
(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