Как я мог распечатать текущую дату, пользуясь библиотеками Boost, в формате dd/mm/yyyy H?
Что я имею:
boost::posix_time::ptime now = boost::posix_time::second_clock::local_time();
cout << boost::posix_time::to_simple_string(now).c_str();
2009-Dec-14 23:31:40
Но я хочу:
14 декабря 2009 23:31:40
Если вы используете Boost.Date_Time , это делается с использованием фасетов ввода-вывода.
Вам необходимо включить boost / date_time / posix_time / posix_time_io.hpp
, чтобы получить правильные определения типов фасетов ( 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
См. Также список флагов формата в документации ускорения, если вы хотите вывести что-то более интересное.