Implementing Last-Modified to all HTTP 200 responses.
Was not happy with how I had to setup a fixed size buffer to give to std::strftime, in this case I was able to set all values to their fixed size counterpart.
The string looks like “Last-Modified: Fri, 16 Nov 2018 12:34:56 GMT” which is “%a, %d %b %Y %H:%M:%S %Z”
If I set %Z to be 3 characters for GMT (longest one is 5, for example CHADT for Chatham Islands) the total max length the string can be is 29. I set it to 32 because it’s just so close and a much nicer number, also I can create some excuses like “But what about \0 or longer %Z zone names”
const auto now = std::time(nullptr); char buf; std::strftime( buf, sizeof(buf), "%a, %d %b %Y %H:%M:%S %Z", std::gmtime(&now) );
But why isn’t there a nice C++11/14/17 thing where I can give it the format and get a string back?
const auto formatted = std::time_to_string( now, "%a, %d %b %Y %H:%M:%S %Z" );
If I want the control I can fall back to but in 99% of the cases I just want the formatted text of the time_t I’m giving it.