The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
Copyright © 2001-2004 The IEEE and The Open Group, All Rights reserved.
A newer edition of this document exists here


asctime, asctime_r - convert date and time to a string


#include <time.h>

char *asctime(const struct tm *

[TSF] [Option Start] char *asctime_r(const struct tm *restrict tm, char *restrict buf); [Option End]


For asctime(): [CX] [Option Start] The functionality described on this reference page is aligned with the ISO C standard. Any conflict between the requirements described here and the ISO C standard is unintentional. This volume of IEEE Std 1003.1-2001 defers to the ISO C standard. [Option End]

The asctime() function shall convert the broken-down time in the structure pointed to by timeptr into a string in the form:

Sun Sep 16 01:03:52 1973\n\0

using the equivalent of the following algorithm:

char *asctime(const struct tm *timeptr)
    static char wday_name[7][3] = {
        "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
    static char mon_name[12][3] = {
        "Jan", "Feb", "Mar", "Apr", "May", "Jun",
        "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
    static char result[26];

sprintf(result, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n", wday_name[timeptr->tm_wday], mon_name[timeptr->tm_mon], timeptr->tm_mday, timeptr->tm_hour, timeptr->tm_min, timeptr->tm_sec, 1900 + timeptr->tm_year); return result; }

The tm structure is defined in the <time.h> header.

[CX] [Option Start] The asctime(), ctime(), gmtime(), and localtime() functions shall return values in one of two static objects: a broken-down time structure and an array of type char. Execution of any of the functions may overwrite the information returned in either of these objects by any of the other functions.

The asctime() function need not be reentrant. A function that is not required to be reentrant is not required to be thread-safe. [Option End]

[TSF] [Option Start] The asctime_r() function shall convert the broken-down time in the structure pointed to by tm into a string (of the same form as that returned by asctime()) that is placed in the user-supplied buffer pointed to by buf (which shall contain at least 26 bytes) and then return buf. [Option End]


Upon successful completion, asctime() shall return a pointer to the string. [CX] [Option Start]  If the function is unsuccessful, it shall return NULL. [Option End]

[TSF] [Option Start] Upon successful completion, asctime_r() shall return a pointer to a character string containing the date and time. This string is pointed to by the argument buf. If the function is unsuccessful, it shall return NULL. [Option End]


No errors are defined.

The following sections are informative.




Values for the broken-down time structure can be obtained by calling gmtime() or localtime(). This function is included for compatibility with older implementations, and does not support localized date and time formats. Applications should use strftime() to achieve maximum portability.

The asctime_r() function is thread-safe and shall return values in a user-supplied buffer instead of possibly using a static data area that may be overwritten by each call.






clock(), ctime(), difftime(), gmtime(), localtime() , mktime(), strftime(), strptime(), time(), utime(), the Base Definitions volume of IEEE Std 1003.1-2001, <time.h>


First released in Issue 1. Derived from Issue 1 of the SVID.

Issue 5

Normative text previously in the APPLICATION USAGE section is moved to the DESCRIPTION.

The asctime_r() function is included for alignment with the POSIX Threads Extension.

A note indicating that the asctime() function need not be reentrant is added to the DESCRIPTION.

Issue 6

The asctime_r() function is marked as part of the Thread-Safe Functions option.

Extensions beyond the ISO C standard are marked.

The APPLICATION USAGE section is updated to include a note on the thread-safe function and its avoidance of possibly using a static data area.

The DESCRIPTION of asctime_r() is updated to describe the format of the string returned.

The restrict keyword is added to the asctime_r() prototype for alignment with the ISO/IEC 9899:1999 standard.

IEEE Std 1003.1-2001/Cor 2-2004, item XSH/TC2/D6/17 is applied, adding the CX extension in the RETURN VALUE section requiring that if the asctime() function is unsuccessful it returns NULL.

End of informative text.

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
[ Main Index | XBD | XCU | XSH | XRAT ]