【问题标题】:Get year from boost ptime从 boost ptime 中获取年份
【发布时间】:2009-09-12 20:11:03
【问题描述】:

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

我的问题是:我怎样才能最有效地从 boost ptime 变量中提取 year?下面是一个示例程序,其中包含 三 行代码,额外的 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;
}

【问题讨论】:

    标签: c++ boost boost-date-time


    【解决方案1】:

    跳过 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-13
      • 2011-10-20
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多