2009-09-12 17 views
5

Varolan bir programı C++'ye dönüştürüyorum ve burada Sybase zaman damgalarını işlemek gerekiyor. Bu zaman damgaları, bilgimin boost::posix_time::ptime değişkeniyle en iyi şekilde işlenebileceği tarih ve saat bilgisi içerir. Koddaki birkaç yerde, yılı değişkenden almam gerekiyor.Boost ptime'dan yıl kazanın

Sorum şu: nasıl en verimli bir boost ptime değişkenden yıl çıkarabilir? Aşağıda, bir ostringstream değişkeninin ve bir boost::gregorian::date değişkeninin ek yükü ile üç satır satırının alındığı örnek bir programdır. boost belgelerine göre

:

Sınıf ptime bir zaman noktasının tarih kısmına arayüzü gregorian::date bağlıdır

ancak gregorian::date bir temel sınıf olmak görünmüyor ptime. Bir şekilde burada bir şey eksik.

Yılı ptime'dan çıkarmak için daha kolay bir yol yok mu?

Örnek:

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

cevap

5

ostringstream atlayın. Aksi takdirde, "ad alanı kullanılarak ..."

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