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