Год от повышения ptime
Я преобразую существующую программу в C++ и здесь нужно манипулировать метками времени Sybase. Эти временные метки содержат информацию о дате и времени, которая, насколько мне известно, может быть лучше всего обработана переменной boost::posix_time::ptime
. В нескольких местах кода мне нужно получить год из переменной.
Мой вопрос: как я могу наиболее эффективно извлечь year из переменной boost ptime? Ниже приведен пример программы, в которой требуется три строки кода, с накладными расходами дополнительная переменная ostringstream
и переменная boost::gregorian::date
.
Согласно документации boost:
Класс 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;
}
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; }