Converting a date into a string

Converting a date into a string

How to:

The strftime function from the <time.h> library is commonly used for this purpose. It allows you to format date and time in a variety of ways by specifying format specifiers. Here’s a quick example:

#include <stdio.h>
#include <time.h>

int main() {
    char dateStr[100];
    time_t now = time(NULL);
    struct tm *ptm = localtime(&now);

    // Convert the date & time to string (e.g., "Wed Jun 30 21:49:08 2021")
    strftime(dateStr, sizeof(dateStr), "%a %b %d %H:%M:%S %Y", ptm);
    printf("Current Date and Time: %s\n", dateStr);
    return 0;

Sample output might look like this:

Current Date and Time: Wed Jun 30 21:49:08 2021

You can customize the format by changing the format specifiers passed to strftime. For example, to get the date in the format YYYY-MM-DD, you would use "%Y-%m-%d".

Deep Dive

The strftime function and the <time.h> library are part of the C Standard Library, which dates back to the original ANSI C standard (C89/C90). While straightforward and supported across many platforms, this approach can seem low-level and cumbersome compared to modern programming languages that offer more intuitive date and time libraries.

One should note, while the C standard library’s time functions are widely supported and relatively simple to use, they lack some of the more complex timezone manipulation and internationalization features found in libraries of newer languages or third-party C libraries such as International Components for Unicode (ICU).

However, the strftime function’s customization capabilities and wide platform support make it a reliable and useful tool for date string conversion in C. Programmers coming from languages with higher-level datetime libraries may need to adjust to its low-level nature but will find it remarkably powerful and versatile for formatting dates and times for a variety of applications.