home | help
std::asctime(3) 	       C++ Standard Libary		 std::asctime(3)

NAME
     std::asctime - std::asctime

Synopsis
	Defined in header <ctime>
	char* asctime( const std::tm* time_ptr );

	Converts  given calendar time std::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 us-
     ing %.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.

	The behavior is undefined if any member of *time_ptr is outside its nor-
     mal 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.

Parameters
	time_ptr - pointer to a std::tm object specifying the time to print

Return value
	Pointer to a static null-terminated character string holding the textual
	representation	of  date  and  time.  The  string  may be shared between
     std::asctime and
	std::ctime, and may be overwritten on each invocation of  any  of  those
     functions.

Notes
	This  function	returns a pointer to static data and is not thread-safe.
     POSIX marks
	this function obsolete and recommends locale-dependent std::strftime in-
     stead. In
	std::locale("C") the std::strftime format string "%c\n" will be an exact
     match to
	std::asctime output, while in other locales the format string
	"%a %b %e %H:%M:%S %Y\n" will be a potentially closer but not always ex-
     act match.

	POSIX limits undefined behaviors only  to  the	cases  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
     // Run this code

      #include <ctime>
      #include <iomanip>
      #include <iostream>

      int main()
      {
	  const std::time_t now = std::time(nullptr);

	  for  (const  char*  localeName  :  {"C",  "en_US.utf8",  "de_DE.utf8",
     "ja_JP.utf8"})
	  {
	      std::cout << "locale " << localeName << ":\n" << std::left;
	      std::locale::global(std::locale(localeName));

	      std::cout  <<  std::setw(40)  <<	"      asctime"   <<   std::asc-
     time(std::localtime(&now));

	      // strftime output for comparison:
	      char buf[64];
	      if (strftime(buf, sizeof buf, "%c\n", std::localtime(&now)))
		  std::cout << std::setw(40) << "    strftime %c" << buf;

	      if  (strftime(buf,  sizeof buf, "%a %b %e %H:%M:%S %Y\n", std::lo-
     caltime(&now)))
		  std::cout << std::setw(40) << "    strftime %a %b %e	%H:%M:%S
     %Y" << buf;

	      std::cout << '\n';
	  }
      }

Possible output:
      locale C:
	  asctime			      Wed Nov  4 00:45:01 2020
	  strftime %c			      Wed Nov  4 00:45:01 2020
	  strftime %a %b %e %H:%M:%S %Y       Wed Nov  4 00:45:01 2020

      locale en_US.utf8:
	  asctime			      Wed Nov  4 00:45:01 2020
	  strftime %c			      Wed 04 Nov 2020 12:45:01 AM UTC
	  strftime %a %b %e %H:%M:%S %Y       Wed Nov  4 00:45:01 2020

      locale de_DE.utf8:
	  asctime			      Wed Nov  4 00:45:01 2020
	  strftime %c			      Mi 04 Nov 2020 00:45:01 UTC
	  strftime %a %b %e %H:%M:%S %Y       Mi Nov  4 00:45:01 2020

      locale ja_JP.utf8:
	  asctime			      Wed Nov  4 00:45:01 2020
	  strftime	    %c				       2020a^1'11ae04aeY
     00ae45a01c<section>
	  strftime %a %b %e %H:%M:%S %Y       ae<degree>' 11ae	4 00:45:01 2020

See also
	ctime	 converts a std::time_t object to a textual representation
		 (function)
	strftime converts a std::tm object to custom textual representation
		 (function)
	put_time formats and outputs a date/time value according to  the  speci-
     fied format
	(C++11)  (function template)
	C documentation for
	asctime

http://cppreference.com 	   2024.06.10			 std::asctime(3)

home | help