2009-09-12 5 views
5

Je convertis un programme existant en C++ et j'ai besoin ici de manipuler les horodatages Sybase. Ces horodatages contiennent des informations sur la date et l'heure qui, à ma connaissance, peuvent être traitées par une variable boost::posix_time::ptime. Dans quelques endroits du code, j'ai besoin de l'année de la variable.Obtenir l'année à partir de boost ptime

Ma question est: comment puis-je plus efficacement extraire la année d'une variable ptime boost? Voici un exemple de programme dans lequel il faut trois lignes de code, avec la surcharge d'une variable supplémentaire ostringstream et une variable boost::gregorian::date.

Selon boost documentation:

classe ptime dépend de gregorian::date pour l'interface à la partie date d'un point de temps

cependant gregorian::date ne semble pas être une classe de base de ptime. Quelque part, il me manque quelque chose ici.

Y a-t-il un moyen plus simple d'extraire l'année du ptime?

Exemple:

#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; 
} 

Répondre

5

Skip the ostringstream. Sinon, vous pouvez bénéficier de "using namespace ..."

#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; 
} 
Questions connexes