Я не нашел это в документации: как получить местное время (лучше отформатированный) с повышением?
Используйте posix_time для создания объекта времени из системных часов.
Например, это выведет текущее системное время в виде строки ISO-формата:
namespace pt = boost::posix_time;
pt::to_iso_string(pt::second_clock::local_time());
Альтернативные варианты форматирования см. в разделе "Преобразование в строку" вышеуказанной ссылки и в ссылке Date Time Input/Output. Кроме того, вы можете создать свою собственную строку вывода, используя функции доступа. Например, чтобы получить дату в стиле США:
namespace pt = boost::posix_time;
pt::ptime now = pt::second_clock::local_time();
std::stringstream ss;
ss << static_cast<int>(now.date().month()) << "/" << now.date().day()
<< "/" << now.date().year();
std::cout << ss.str() << std::endl;
Обратите внимание, что месяц приводится к int
, поэтому он будет отображаться в виде цифр. Фасет вывода по умолчанию отобразит его как трехбуквенное сокращение месяца ("Mar" для марта).
Используйте API ввода/вывода даты/времени:
http://www.boost.org/doc/libs/1_42_0/doc/html/date_time/date_time_io.html#date_time.io_objects
Не знаю, поможет ли это, но в boost docs есть несколько примеров форматирования дат.
Кроме того, я думаю, что эта статья описывает некоторые основы, на которые стоит обратить внимание.