4

ここでは問題ではありません。ただの好奇心です。他の言語の dateTime 実装を使用した同様の操作が 3 行または 4 行しかない場合、これを達成するために書かなければならなかったコードの量について疑問に思っています。

だから私が持っているのは、文字列としてのタイムスタンプです。06-Feb-2013 00:01:01

また、boost lib を使用して、入力ファセットと出力ファセットを作成し、stringstream を作成して、io ファセットをストリームに注入します。次に、タイムスタンプ文字列を文字列ストリームに読み取ってから、それを posix 時間オブジェクトにシフトアウトして 1 秒追加してからストリームに戻して、文字列として使用できるようにします。ある意味では、ここで行っているのは、タイムスタンプを06-Feb-2013 00:01:01に変換することだけ06-Feb-2013 00:01:02です。

例は次のとおりです。

using namespace boost::posix_time;

ptime timeStamp;
time_facet* outFacet = new time_facet("%d-%b-%Y %H:%M:%S");
time_input_facet* inFacet = new time_input_facet("%d-%b-%Y %H:%M:%S");
std::stringstream ss;
ss.imbue(std::locale(std::locale::classic(), outFacet));
ss.imbue(std::locale(ss.getloc(), inFacet));

ss.str(06-Feb-2013 00:01:01);
ss >> timeStamp;
timeStamp+=seconds(1);
ss.str("");
ss << timeStamp;

コードは機能します。問題はありません。python/ruby/jsなどを考慮して、これを回りくどい方法で行ったかどうか疑問に思っています。次の行に沿って何かをするだけで済みました。

dt = new DateTime("06-Feb-2013 00:01:01", aformat);
dt.addSecond() //or dt += another DateTime object
dt.strformat(aformat) //or trace/print/puts dt

今では、C++ が低レベルであることに感謝していますが、それでも疑問に思わずにはいられません。それで、改善点や考えはありますか?

4

1 に答える 1

0

std::string to_simple_string(ptime) (YYYY-mmm-DD HH:MM:SS.fffffffff 文字列をフォーマットするため) を使用して、わずかに異なる (固定された) 時刻形式を受け入れる場合は、mmm 3 文字の月名。小数秒のみhttp://www.boost.org/doc/libs/1_34_0/doc/html/date_time/posix_time.htmlに従って、ゼロ以外の場合に含まれます) は、対応する "ptime time_from_string(std: :ストリング)"。

于 2013-12-31T16:18:16.137 に答える