ここでは問題ではありません。ただの好奇心です。他の言語の 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++ が低レベルであることに感謝していますが、それでも疑問に思わずにはいられません。それで、改善点や考えはありますか?