Подтвердить что ты не робот

Как форматировать объект времени даты с форматом dd/mm/yyyy?

Как распечатать текущую дату, используя библиотеки 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-Dec-2009 23:31:40

4b9b3361

Ответ 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

См. также список флагов формата в документах повышения, в случае, если вы хотите вывести что-то более приятное.