How to format a datetime to string using boost?

后端 未结 2 1171

I want to format a date/time to a string using boost.

Starting with the current date/time:

ptime now = second_clock::universal_time();
相关标签:
2条回答
  • 2020-12-05 14:40
    // create your date
    boost::gregorian::date d(2009, 1, 7); 
    
    // create your formatting
    boost::gregorian::date_facet *df = new boost::gregorian::date_facet("%Y%m%d_%H%M%S"); 
    
    // set your formatting
    ostringstream is;
    is.imbue(std::locale(is.getloc(), df));
    is << d << endl;
    
    // get string
    cout << "output :" << is.str() << endl;
    
    0 讨论(0)
  • 2020-12-05 14:44

    For whatever it is worth, here is the function that I wrote to do this:

    #include "boost/date_time/posix_time/posix_time.hpp"
    #include <iostream>
    #include <sstream>
    
    std::wstring FormatTime(boost::posix_time::ptime now)
    {
      using namespace boost::posix_time;
      static std::locale loc(std::wcout.getloc(),
                             new wtime_facet(L"%Y%m%d_%H%M%S"));
    
      std::basic_stringstream<wchar_t> wss;
      wss.imbue(loc);
      wss << now;
      return wss.str();
    }
    
    int main() {
      using namespace boost::posix_time;
      ptime now = second_clock::universal_time();
    
      std::wstring ws(FormatTime(now));
      std::wcout << ws << std::endl;
      sleep(2);
      now = second_clock::universal_time();
      ws = FormatTime(now);
      std::wcout << ws << std::endl;
    
    }
    

    The output of this program was:

    20111130_142732
    20111130_142734
    

    I found these links useful:

    • How to format date time object with format dd/mm/yyyy?
    • http://www.boost.org/doc/libs/1_35_0/doc/html/date_time/date_time_io.html#date_time.time_facet
    • http://www.cplusplus.com/reference/iostream/stringstream/str/
    0 讨论(0)
提交回复
热议问题