C time strftime() Function
Example
Print the current date with the names of the day and month:
time_t now = time(NULL);
struct tm *t = localtime(&now);
char buffer[50];
strftime(buffer, sizeof(buffer), "%A, %B %d, %Y", t);
printf("%s", buffer);
Definition and Usage
The strftime() function writes a date and time into a string, in a format that you choose.
The format is text with format codes that start with %. Each code is replaced with a part of the date or time, and other characters (like , and -) are copied as they are. See all format codes in the table below.
Note: These codes are not the same as in printf(). In strftime(), %d means the day of the month, not an integer.
The strftime() function is defined in the <time.h> header file.
Syntax
size_t strftime(char *str, size_t size, const char *format, const struct tm *timeptr);
Parameter Values
| Parameter | Description |
|---|---|
| str | Required. The char array to write the result to. |
| size | Required. The maximum number of characters to write, including the null character (\0). Usually the size of the array, like sizeof(buffer). |
| format | Required. The format, with format codes from the table below. |
| timeptr | Required. A pointer to a struct tm with the date and time, for example from localtime(). |
Technical Details
| Returns: | A size_t value with the number of characters written, not counting the null character. If the result does not fit in the array, it returns 0. |
|---|
Format Codes
The examples show Thursday, June 26, 2025, at 14:30:05 UTC:
| Code | Meaning | Example |
|---|---|---|
| %a | Short name of the day | Thu |
| %A | Name of the day | Thursday |
| %b | Short name of the month | Jun |
| %B | Name of the month | June |
| %c | Date and time | Thu Jun 26 14:30:05 2025 |
| %d | Day of the month (01-31) | 26 |
| %F | Date as year-month-day (the same as %Y-%m-%d) | 2025-06-26 |
| %H | Hour, 24-hour clock (00-23) | 14 |
| %I | Hour, 12-hour clock (01-12) | 02 |
| %j | Day of the year (001-366) | 177 |
| %m | Month (01-12) | 06 |
| %M | Minute (00-59) | 30 |
| %p | AM or PM | PM |
| %S | Second (00-60) | 05 |
| %T | Time as hour:minute:second (the same as %H:%M:%S) | 14:30:05 |
| %u | Day of the week, Monday is 1 (1-7) | 4 |
| %w | Day of the week, Sunday is 0 (0-6) | 4 |
| %x | Date | 06/26/25 |
| %X | Time | 14:30:05 |
| %y | Year, last two digits (00-99) | 25 |
| %Y | Year | 2025 |
| %z | Offset from UTC | +0000 |
| %Z | Name of the time zone | UTC |
| %% | A % character | % |
Note: %c, %x and %X can look different on other systems and in other languages.
Related Pages
Read more about dates and times in our C Date and Time Tutorial.