Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: All
Jul 2, 1999



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Use Y2K-Compliant Date Formats

The C++ Standard Library uses the ANSI C date and time library. Fortunately, the <time.h> 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 '\0') 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.

Danny Kalev
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date