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

从一开始就得到一年 < >我将现有程序转换为C++,需要操作Sybase时间戳。这些时间戳包含日期和时间信息,据我所知,最好使用boost::posix_time::ptime变量来处理这些信息。在代码中的一些地方,我需要从变量中获取年份,c++,boost,boost-date-time,C++,Boost,Boost Date Time,我的问题是:如何从boost-ptime变量中最有效地提取年份?下面是一个示例程序,其中需要三行代码,额外的ostringstream变量和boost::gregorian::date变量的开销 根据boost文档: 类ptime依赖于 时间点的日期部分 然而,gregorian::date似乎不是ptime的基类。不知怎么的,我在这里遗漏了一些东西 从ptime中提取年份难道没有更简单的方法吗 样本: #include <boost/date_time/local_time/local_

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

根据boost文档:

类ptime依赖于 时间点的日期部分

然而,
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;
}
#包括
#包括
int main()
{
boost::posix_time::ptime t(boost::posix_time::second_clock::local_time());
boost::gregorian::date d=t.date();

std::ostringstream os;os跳过ostringstream。否则,您可能会受益于“使用名称空间…”

#包括
#包括
int main()
{
使用名称空间boost::posix_time;
标准::cout
#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;
}