Use Y2K-Compliant Date Formats

Use Y2K-Compliant Date Formats

The C++ Standard Library uses the ANSI C date and time library. Fortunately, the functions and data structures are Y2K compliant, so legacy code that was written nearly 30 years ago should work satisfactorily in the years to come. However, to ensure Y2K compliance, make sure that date and time formatting functions display a 4-digit year. This standard function formats a struct tm according to the format fmt and stores the result in no more than max bytes (including a terminating ‘’) in the buffer str:

   size_t strftime(char *str, size_t max, const char *fmt, const struct tm* ptm);

The format string may contain these symbols (this is a partial list):

   %a     // a three character abbreviation for the name of the weekday   %A     // the full name of the weekday   %b     // a three character abbreviation for the name of the month   %B     // the full name of the month  %d     // the numeric day of the month, counting from zero

Additional symbols exist for the hour, minutes, second, and so forth. However, the crucial part for Y2K compliance is:

   %y    // two digit representation of the year, without the century  %Y   // full four digit representation of the year

To avoid any potential Y2K problems, you should always use the %Y format symbol rather than %y. Note also, that if you apply this change to legacy code, you have to ensure that the buffer is large enough to hold two extra characters.

See also  Redefining Energy Management: Advanced Solutions for Modern Buildings

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist