Search code examples
c++boostboost-date-time

Boost ptime: how to format data in a way browsers send inside headers of http requests?


I need to format my ptime in such way Wed, 21 Jan 2004 19:51:30 GMT How to do such thing with boost? (so it would look like data format of HTTP servers Expires and Last-Modified and Date response headers )


Solution

  • #include <locale>
    #include <string>
    #include <iostream>
    #include <sstream>
    #include <boost/date_time/posix_time/posix_time.hpp>
    
    std::string current_time_formatted()
    {
        namespace bpt = boost::posix_time;
    
        static char const* const fmt = "%a, %d %b %Y %H:%M:%S GMT";
        std::ostringstream ss;
        // assumes std::cout's locale has been set appropriately for the entire app
        ss.imbue(std::locale(std::cout.getloc(), new bpt::time_facet(fmt)));
        ss << bpt::second_clock::universal_time();
        return ss.str();
    }
    

    See Date Time Input/Output for more information on the available format flags.