Получить год от boost ptime

Я конвертирую существующую программу в C++, и здесь мне нужно манипулировать временными метками Sybase. Эти метки времени содержат информацию о дате и времени, которую, насколько мне известно, лучше всего обрабатывать с помощью переменной boost::posix_time::ptime. В нескольких местах кода мне нужно получить год из переменной.

У меня вопрос: как наиболее эффективно извлечь год из переменной boost ptime? Ниже приведен пример программы, состоящей из трех строк кода с дополнительными переменными ostringstream и boost::gregorian::date.

Согласно форсированной документации:

Класс ptime зависит от gregorian::date для интерфейса с частью даты момента времени.

однако gregorian::date не кажется базовым классом ptime. Как-то я что-то упускаю здесь.

Нет ли более простого способа извлечь год из ptime?

Образец:

#include <boost/date_time/local_time/local_time.hpp>
#include <iostream>

int main()
{
   boost::posix_time::ptime t(boost::posix_time::second_clock::local_time());
   boost::gregorian::date d = t.date();
   std::ostringstream os; os << d.year();
   std::cout << os.str() << std::endl;
   return 0;
}

person pointer    schedule 12.09.2009    source источник


Ответы (1)


Пропустить ostringstream. В противном случае вы можете извлечь выгоду из «использования пространства имен ...»

#include <boost/date_time/local_time/local_time.hpp>
#include <iostream>

int main()
{
   using namespace boost::posix_time;
   std::cout << second_clock::local_time().date().year() << std::endl;
   return 0;
}
person Jonathan Graehl    schedule 12.09.2009