我正在将现有程序转换为C ++,这里需要操作Sybase时间戳。这些时间戳包含日期和时间信息,据我所知,boost::posix_time::ptime
变量可以最好地处理这些信息。在代码中的一些地方,我需要从变量中获取年份。
我的问题是:如何才能最有效地从boost ptime变量中提取年?下面是一个示例程序,其中包含三行代码行,其中包含额外ostringstream
变量和boost::gregorian::date
变量的开销。
根据提升文档:
类ptime依赖于
gregorian::date
的接口 时间点的日期部分
但是gregorian::date
似乎不是ptime
的基类。不知怎的,我在这里遗漏了一些东西。
是否有更简单的方法从ptime
中提取年份?
样品:
#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;
}
答案 0 :(得分:5)
跳过ostringstream。否则,您可能会受益于“使用命名空间......”
#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;
}