6

我正在将现有程序转换为 C++,这里需要操作 Sybase 时间戳。这些时间戳包含日期和时间信息,据我所知,这些信息最好由boost::posix_time::ptime变量处理。在代码中的一些地方,我需要从变量中获取年份。

我的问题是:如何最有效地从 boost ptime 变量中提取年份?下面是一个示例程序,它需要三行代码,并带有一个额外ostringstream变量和一个boost::gregorian::date变量的开销。

根据 boost 文档:

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

1 回答 1

6

跳过 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;
}
于 2009-09-12T20:31:54.467 回答