C++ Standard Library C++ STL Library

C++ <ctime> - strftime() Function



The C++ <ctime> strftime() function converts the date and time information described in timeptr to a null-terminated multibyte character string str according to format string format, with a limit of maxsize characters.

Syntax

size_t strftime (char* str, 
                 size_t maxsize, 
                 const char* format,
                 const struct tm* timeptr );

Parameters

str Specify pointer to the first element of the char array for output.
maxsize Specify maximum number of characters to write to str, including the terminating null-character.
format

Specify pointer to a null-terminated multibyte character string (C string) specifying the format of conversion.

The format string consists of zero or more format specifiers (sub-sequences beginning with %), and ordinary characters. All ordinary characters are copied to the output string without modification. The format specifiers are listed below:

%specifierDescriptionExample
%aAbbreviated weekday name *Thu
%AFull weekday name *Thursday
%bAbbreviated month name *Aug
%BFull month name *August
%cDate and time representation *Thu Aug 23 14:55:02 2001
%CYear divided by 100 and truncated to integer (00-99)20
%dDay of the month, zero-padded (01-31)23
%DShort MM/DD/YY date, equivalent to %m/%d/%y08/23/01
%eDay of the month, space-padded ( 1-31)23
%FShort YYYY-MM-DD date, equivalent to %Y-%m-%d2001-08-23
%gWeek-based year, last two digits (00-99)01
%GWeek-based year2001
%hAbbreviated month name * (same as %b)Aug
%HHour in 24h format (00-23)14
%IHour in 12h format (01-12)02
%jDay of the year (001-366)235
%mMonth as a decimal number (01-12)08
%MMinute (00-59)55
%nNew-line character ('\n')
%pAM or PM designationPM
%r12-hour clock time *02:55:02 pm
%R24-hour HH:MM time, equivalent to %H:%M14:55
%SSecond (00-61)02
%tHorizontal-tab character ('\t')
%TISO 8601 time format (HH:MM:SS), equivalent to %H:%M:%S14:55:02
%uISO 8601 weekday as number with Monday as 1 (1-7)4
%UWeek number with the first Sunday as the first day of week one (00-53)33
%VISO 8601 week number (01-53)34
%wWeekday as a decimal number with Sunday as 0 (0-6)4
%WWeek number with the first Monday as the first day of week one (00-53)34
%xDate representation *08/23/01
%XTime representation *14:55:02
%yYear, last two digits (00-99)01
%YYear2001
%zISO 8601 offset from UTC in timezone (1 minute=1, 1 hour=100)
If timezone cannot be determined, no characters
+100
%ZTimezone name or abbreviation *
If timezone cannot be determined, no characters
CDT
%%A % sign%

Note: * The specifiers marked with an asterisk (*) are locale-dependent.

Two locale-specific modifiers can also be inserted between the percentage sign (%) and the character that determines the behavior of the specifier. These modifiers are ignored if unsupported by the locale.

ModifierDescriptionApplies to
EUses the locale's alternative representation %Ec  %EC  %Ex  %EX  %Ey  %EY
OUses the locale's alternative numeric symbols %Od  %Oe  %OH  %OI  %Om  %OM  %OS
%Ou  %OU  %OV  %Ow  %OW  %Oy
timeptr Specify pointer to a tm structure that contains the date and time information to be converted.

Return Value

Returns the total number of characters copied to str (not including the terminating null-character) on success. If maxsize is reached before the entire string could be stored, 0 is returned and the contents of the array pointed by str are undefined.

Example:

The example below shows the usage of strftime() function.

#include <iostream>
#include <ctime>

using namespace std;

int main () {
  time_t rawtime;
  struct tm * timeinfo;
  char buffer[80];

  time(&rawtime);
  timeinfo = localtime (&rawtime);

  strftime (buffer,80,"Current Date: %A, %F %I:%M %p", timeinfo);
  cout<<buffer;

  return 0;
}

The output of the above code will be similar to:

Current Date: Wednesday, 2022-02-02 08:08 AM

❮ C++ <ctime> Library