Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      asctime, asctime_s

      From cppreference.com
      <c‎ |chrono
       
       
      Date and time utilities
      Functions
      Time manipulation
      Format conversions
      asctimeasctime_s
      (deprecated in C23)(C11)
      (deprecated in C23)(C11)
      Constants
      Types
       
      Defined in header<time.h>
      (1)
      char*                asctime(conststructtm* time_ptr);
      (until C23)
      [[deprecated]]char* asctime(conststructtm* time_ptr);
      (since C23)
      errno_t asctime_s(char* buf, rsize_t bufsz,conststructtm* time_ptr);
      (2)(since C11)
      1) Converts given calendar timetm 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 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 bytime_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.
      This function is deprecated and should not be used in new code.
      (since C23)
      2) Same as(1), except that the message is written into user-provided storagebuf, which is guaranteed to be null-terminated, and the following errors are detected at runtime and call the currently installedconstraint handler function:
      • buf ortime_ptr is a null pointer
      • bufsz is less than 26 or greater thanRSIZE_MAX
      • not all members of*time_ptr are within their normal ranges
      • the year indicated bytime_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 constant1 before including<time.h>.

      Contents

      [edit]Parameters

      time_ptr - pointer to atm 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

      [edit]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 betweenasctime andctime, and may be overwritten on each invocation of any of those functions.
      2) zero on success, non-zero on failure, in which casebuf[0] is set to zero (unlessbuf is a null pointer orbufsz is zero or greater thanRSIZE_MAX).

      [edit]Notes

      asctime returns a pointer to static data and is not thread-safe. POSIX marks this function obsolete and recommendsstrftime instead. The C standard also recommendsstrftime instead ofasctime andasctime_s becausestrftime is more flexible and locale-sensitive.

      POSIX limits undefined behaviors only to when the output string would be longer than 25 characters, whentimeptr->tm_wday ortimeptr->tm_mon are not within the expected ranges, or whentimeptr->tm_year exceedsINT_MAX-1990.

      Some implementations handletimeptr->tm_mday==0 as meaning the last day of the preceding month.

      [edit]Example

      Run this code
      #define __STDC_WANT_LIB_EXT1__ 1#include <stdio.h>#include <time.h> int main(void){structtmtm=*localtime(&(time_t){time(NULL)});printf("%s", asctime(&tm));// note implicit trailing '\n' #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 2015Tue May 26 21:51:50 2015

      [edit]References

      • C17 standard (ISO/IEC 9899:2018):
      • 7.27.2.1 The asctime function (p: 287)
      • K.3.8.2.1 The asctime_s function (p: 453-454)
      • 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

      [edit]See also

      (deprecated in C23)(C11)
      converts atime_t object to a textual representation
      (function)[edit]
      converts atm object to custom textual representation
      (function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/chrono/asctime&oldid=172468"

      [8]ページ先頭

      ©2009-2025 Movatter.jp