Ответ 1
Если вы используете Boost.Date_Time, это делается с использованием фасет IO.
Вам нужно включить boost/date_time/posix_time/posix_time_io.hpp
, чтобы получить правильные typedefs граней (wtime_facet
, time_facet
и т.д.) для boost::posix_time::ptime
. Как только это будет сделано, код довольно прост. Вы вызываете imbue на ostream
, который хотите вывести, а затем просто введите ptime
:
#include <iostream>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/posix_time/posix_time_io.hpp>
using namespace boost::posix_time;
using namespace std;
int main(int argc, char **argv) {
time_facet *facet = new time_facet("%d-%b-%Y %H:%M:%S");
cout.imbue(locale(cout.getloc(), facet));
cout << second_clock::local_time() << endl;
}
Вывод:
14-Dec-2009 16:13:14
См. также список флагов формата в документах повышения, в случае, если вы хотите вывести что-то более приятное.