Sto convertendo un programma esistente in C++ e qui è necessario modificare i timestamp di Sybase. Questi timestamp contengono informazioni di data e ora, che a mia conoscenza possono essere gestite al meglio da una variabile boost::posix_time::ptime
. In alcuni punti del codice ho bisogno di ottenere l'anno dalla variabile.Ottieni anno da boost ptime
La mia domanda è: come posso modo più efficiente estrarre il anno da una variabile spinta ptime? Di seguito è riportato un programma di esempio in cui sono necessarie tre righe di codice, con il sovraccarico di una variabile ostringstream
aggiuntiva e una variabile boost::gregorian::date
.
Secondo la documentazione spinta:
Classe ptime dipende da
gregorian::date
per l'interfaccia alla parte data di un punto di tempo
tuttavia gregorian::date
non sembra essere una classe base di ptime
. In qualche modo mi manca qualcosa qui.
Non esiste un modo più semplice per estrarre l'anno dallo ptime
?
Esempio:
#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;
}