web-dev-qa-db-ja.com

現在の時刻をYYYY-MM-DD-HH-MM-SS文字列として取得する

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

19
ltjax

使用する - 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;
}
33
Null Set

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

2
jbruni