Namespaces
Variants
Views
Actions

Difference between revisions of "c/chrono/ctime"

From cppreference.com
< c‎ | chrono
m (Possible output: 'cause it prints cur time)
m (C23, ref)
Line 6: Line 6:
 
char*  ctime  ( const time_t* timer );
 
char*  ctime  ( const time_t* timer );
 
}}
 
}}
{{dcl|num=2| notes={{mark since c2x}}<!--fixing required-->|
+
{{dcl|num=2| since=c23 |
 
char*  ctime_r( const time_t* timer, char* buf );
 
char*  ctime_r( const time_t* timer, char* buf );
 
}}
 
}}
Line 13: Line 13:
 
}}
 
}}
 
{{dcl end}}
 
{{dcl end}}
@1@ Converts given time since epoch to a calendar local time and then to a textual representation, as if by calling {{c|asctime(localtime(timer))}}{{rev inl|since=c2x| or {{c|asctime(localtime_r(timer, &(struct tm){0}))}}}}.
+
@1@ Converts given time since epoch to a calendar local time and then to a textual representation, as if by calling {{c|asctime(localtime(timer))}}{{rev inl|since=c23| or {{c|asctime(localtime_r(timer, &(struct tm){0}))}}}}.
 
@2@ Same as {{v|1}}, except that the function is equivalent to {{c|asctime_r(localtime_r(timer, &(struct tm){0}), buf)}}.
 
@2@ Same as {{v|1}}, except that the function is equivalent to {{c|asctime_r(localtime_r(timer, &(struct tm){0}), buf)}}.
 
@3@ Same as {{v|1}}, except that the function is equivalent to {{c|asctime_s(buf, bufsz, localtime_s(timer, &(struct tm){0}))}}, and the following errors are detected at runtime and call the currently installed [[c/error/set_constraint_handler_s|constraint handler]] function:
 
@3@ Same as {{v|1}}, except that the function is equivalent to {{c|asctime_s(buf, bufsz, localtime_s(timer, &(struct tm){0}))}}, and the following errors are detected at runtime and call the currently installed [[c/error/set_constraint_handler_s|constraint handler]] function:
Line 77: Line 77:
  
 
===References===
 
===References===
 +
{{ref std c17}}
 +
{{ref std | section=7.27.3.2  | title=The ctime function | p=287-288}}
 +
{{ref std | section=K.3.8.2.2 | title=The ctime_s function | p=454}}
 +
{{ref std end}}
 
{{ref std c11}}
 
{{ref std c11}}
 
{{ref std | section=7.27.3.2  | title=The ctime function | p=393}}
 
{{ref std | section=7.27.3.2  | title=The ctime function | p=393}}
 
{{ref std | section=K.3.8.2.2 | title=The ctime_s function | p=626}}
 
{{ref std | section=K.3.8.2.2 | title=The ctime_s function | p=626}}
 +
{{ref std end}}
 
{{ref std c99}}
 
{{ref std c99}}
 
{{ref std | section=7.23.3.2  | title=The ctime function | p=342}}
 
{{ref std | section=7.23.3.2  | title=The ctime function | p=342}}
 +
{{ref std end}}
 
{{ref std c89}}
 
{{ref std c89}}
 
{{ref std | section=4.12.3.2  | title=The ctime function}}
 
{{ref std | section=4.12.3.2  | title=The ctime function}}

Revision as of 11:30, 12 November 2020

Defined in header <time.h>
char*   ctime  ( const time_t* timer );
(1)
char*   ctime_r( const time_t* timer, char* buf );
(2) (since C23)
errno_t ctime_s( char *buf, rsize_t bufsz, const time_t* timer );
(3) (since C11)
1) Converts given time since epoch to a calendar local time and then to a textual representation, as if by calling asctime(localtime(timer)) or asctime(localtime_r(timer, &(struct tm){0}))(since C23).
2) Same as (1), except that the function is equivalent to asctime_r(localtime_r(timer, &(struct tm){0}), buf).
3) Same as (1), except that the function is equivalent to asctime_s(buf, bufsz, localtime_s(timer, &(struct tm){0})), and the following errors are detected at runtime and call the currently installed constraint handler function:
  • buf or timer is a null pointer
  • bufsz is less than 26 or greater than RSIZE_MAX
As with all bounds-checked functions, ctime_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>.

The resulting string has the following format:

Www Mmm dd hh:mm:ss yyyy\n
  • Www - the day of the week (one of Mon, Tue, Wed, Thu, Fri, Sat, Sun).
  • Mmm - the month (one of Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec).
  • dd - the day of the month
  • hh - hours
  • mm - minutes
  • ss - seconds
  • yyyy - years

The function does not support localization.

Contents

Parameters

timer - pointer to a time_t object specifying the time to print
buf - pointer to the first element of a char array of size at least bufsz
bufsz - max number of bytes to output, typically the size of the buffer pointed to by buf

Return value

1) pointer to a static null-terminated character string holding the textual representation of date and time. The string may be shared between asctime and ctime, and may be overwritten on each invocation of any of those functions.
2) buf, which points to a null-terminated character string holding the textual representation of date and time as described above after returning.
3) zero on success (in which case the string representation of time has been written out to the array pointed to by buf), or non-zero on failure (in which case, the terminating null character is always written to buf[0] unless buf is a null pointer or bufsz is zero or greater than RSIZE_MAX.

Notes

ctime returns a pointer to static data and is not thread-safe. In addition, it modifies the static tm object which may be shared with gmtime and localtime. POSIX marks this function obsolete and recommends strftime instead. The C standard also recommends strftime instead of ctime, ctime_r and ctime_s because strftime is more flexible and locale-sensitive.

The behavior of ctime and ctime_r is undefined for the values of time_t that result in the string longer than 25 characters (e.g. year 10000).

Example

#define __STDC_WANT_LIB_EXT1__ 1
#include <time.h>
#include <stdio.h>
 
int main(void)
{
    time_t result = time(NULL);
    printf("%s", ctime(&result));
 
#ifdef __STDC_LIB_EXT1__
    char str[26];
    ctime_s(str,sizeof str,&result);
    printf("%s", str);
#endif
}

Possible output:

Tue May 26 21:51:03 2015
Tue May 26 21:51:03 2015

References

  • C17 standard (ISO/IEC 9899:2018):
  • 7.27.3.2 The ctime function (p: 287-288)
  • K.3.8.2.2 The ctime_s function (p: 454)
  • C11 standard (ISO/IEC 9899:2011):
  • 7.27.3.2 The ctime function (p: 393)
  • K.3.8.2.2 The ctime_s function (p: 626)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.23.3.2 The ctime function (p: 342)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 4.12.3.2 The ctime function

See also

(deprecated in C23)(C11)
converts a tm object to a textual representation
(function) [edit]
converts a tm object to custom textual representation
(function) [edit]