2009-09-12 12 views
5

Konwertuję istniejący program na C++ i tutaj potrzebuję manipulować znacznikami czasu Sybase. Te znaczniki czasu zawierają informacje o dacie i godzinie, które zgodnie z moją wiedzą mogą być najlepiej obsługiwane przez zmienną boost::posix_time::ptime. W kilku miejscach kodu potrzebuję uzyskać rok ze zmiennej.Zdobądź rok z lotem doładowania

Moje pytanie brzmi: Jak mogę najefektywniej wyodrębnić roku ze zmiennej doładowania ptime? Poniżej znajduje się przykładowy program, w którym pobiera on trzy linie kodu, z dodatkową wartością zmiennej ostringstream i zmienną boost::gregorian::date.

Według dokumentacji Boost:

klasy ptime zależy od gregorian::date dla interfejsu do data części punkcie czasowym

jednak gregorian::date nie wydaje się być klasą bazową z ptime. Jakoś tu czegoś brakuje.

Czy nie istnieje łatwiejszy sposób na wyodrębnienie roku z ptime?

Próbka:

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

Odpowiedz

5

Przejdź ostringstream. W przeciwnym razie możesz skorzystać z "używania przestrzeni nazw".

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