C Standard Library

C <wchar.h> - wcsftime() Function



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

Note: This function is wide character equivalent of strftime() function.

Syntax

size_t wcsftime (wchar_t* str, 
                 size_t maxsize, 
                 const wchar_t* format,
                 const struct tm* timeptr );

Parameters

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

Specify pointer to a null-terminated wide character string (C wide 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 wide characters copied to str (not including the terminating null wide 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 wcsftime() function.

#include <wchar.h>
#include <time.h>

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

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

  wcsftime (buffer,80, L"Current Date: %A, %F %I:%M %p", timeinfo);
  wprintf(L"%ls", buffer);

  return 0;
}

The output of the above code will be similar to:

Current Date: Saturday, 2022-02-12 10:29 AM

❮ C <wchar.h> Library