2009-09-12 11 views
5

Estoy convirtiendo un programa existente a C++ y aquí necesito manipular las marcas de tiempo de Sybase. Estas marcas de tiempo contienen información de fecha y hora, que según mi conocimiento se puede manejar mejor con una variable boost::posix_time::ptime. En algunos lugares del código, necesito obtener el año de la variable.Obtenga el año de boost ptime

Mi pregunta es: ¿cómo puedo extraer más eficientemente la años de una variable de impulso ptime? A continuación se muestra un programa de ejemplo en el que toma tres líneas de código, con la sobrecarga de una variable extra ostringstream y una variable boost::gregorian::date.

Según la documentación impulso:

ptime clase depende de gregorian::date para la interfaz a la parte fecha de un punto de tiempo

embargo gregorian::date no parece ser una clase base de ptime. De alguna manera me falta algo aquí.

¿No hay una forma más fácil de extraer el año del ptime?

muestra:

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

Respuesta

5

Saltar la ostringstream. De lo contrario, puede beneficiarse de "usar el espacio de nombre ..."

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