6

既存のプログラムをC++に変換していますが、ここではSybaseのタイムスタンプを操作する必要があります。これらのタイムスタンプには日付と時刻の情報が含まれており、私の知る限り、boost::posix_time::ptime変数で処理するのが最適です。コードのいくつかの場所で、変数から年を取得する必要があります。

私の質問は、ブーストptime変数からを最も効率的に抽出するにはどうすればよいですか?以下は、追加の変数と変数のオーバーヘッドを伴う3行のコードを使用するサンプルプログラムです。ostringstreamboost::gregorian::date

ブーストドキュメントによると:

gregorian::dateクラス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;
}
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 に答える