¿Cómo formatear una fecha / hora a cadena usando boost?

Quiero formatear una fecha / hora a una cadena usando boost.

A partir de la fecha / hora actual:

ptime now = second_clock::universal_time(); 

y terminando con una cadena que contiene la fecha / hora en este formato:

 %Y%m%d_%H%M%S 

¿Me puede mostrar el código para lograr esto? Gracias.

Para lo que valga, aquí está la función que escribí para hacer esto:

 #include "boost/date_time/posix_time/posix_time.hpp" #include  #include  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 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; } 

La salida de este progtwig fue:

 20111130_142732 20111130_142734 

Encontré estos enlaces útiles:

 // 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;