В C ++, какой самый простой способ добавить один день к дате в этом формате:
"20090629-05: 57: 43"
Возможно, с использованием Boost 1.36 - Boost::date
, Boost::posix_date
или любой другой функциональности библиотеки boost или std
, другие библиотеки меня не интересуют.
Пока я придумал:
форматировать строку (разделить части даты и времени как строку op), чтобы иметь возможность инициализировать boost::gregorian::date
, дата ожидает формат, подобный:
"2009-06-29 05:57:43"
У меня есть
"20090629-05: 57: 43"
добавить один день (повышение date_duration
материал)
- преобразовать обратно
to_simple_string
и добавить часть времени (строковая операция)
Есть ли более простой / изящный способ сделать это?
Я смотрю на эффективность времени выполнения.
Пример кода для вышеуказанных шагов:
using namespace boost::gregorian;
string orig("20090629-05:57:43");
string dday(orig.substr(0,8));
string dtime(orig.substr(8));
date d(from_undelimited_string(dday));
date_duration dd(1);
d += dd;
string result(to_iso_string(d) + dtime);
результат:
20090630-05:57:43