21

現在の時刻を「YYYY-MM-DD-HH-MM-SS」形式の文字列としてエレガントに取得しようとしています。Boostの「DateTime」ライブラリからISO形式で現在の時刻を取得できますが、他の区切り文字列があり、機能しません(これをファイル名で使用しています)。もちろん、区切り文字列を置き換えることもできますが、日時の書式設定オプションを使用してこれを行うためのより良い方法があると感じています。そのような方法はありますか?もしそうなら、どうすればそれを使用できますか?

4

2 に答える 2

38

使用してくださいstd::strftime、それは標準のC++です。

#include <cstdio>
#include <ctime>

int main ()
{
    std::time_t rawtime;
    std::tm* timeinfo;
    char buffer [80];

    std::time(&rawtime);
    timeinfo = std::localtime(&rawtime);

    std::strftime(buffer,80,"%Y-%m-%d-%H-%M-%S",timeinfo);
    std::puts(buffer);

    return 0;
}
于 2011-03-25T21:50:49.740 に答える
2

答えは、getとtakeの意味によって異なります。フォーマットされた時間文字列を出力しようとしている場合は、strftime()を使用してください。テキスト文字列をバイナリ形式に解析しようとしている場合は、strptime()を使用してください。

于 2011-03-25T22:56:07.337 に答える