C++でHH::MM::SS方式で時間を節約する方法を探しています。私はここでそれらが多くの解決策であることを知り、少し研究した後、私はとを選びましtime
たlocaltime
。ただし、次のように表示されるため、関数はlocaltime
少し注意が必要なようです。
localtimeとgmtimeへのすべての呼び出しは同じ静的構造を使用するため、各呼び出しは前の呼び出しの結果を上書きします。
これが引き起こす問題は、次のコードスニペットに示されています。
#include <ctime>
#include <iostream>
using namespace std;
int main() {
time_t t1 = time(0); // get time now
struct tm * now = localtime( & t1 );
std::cout << t1 << std::endl;
sleep(2);
time_t t2 = time(0); // get time now
struct tm * now2 = localtime( & t2 );
std::cout << t2 << std::endl;
cout << (now->tm_year + 1900) << '-'
<< (now->tm_mon + 1) << '-'
<< now->tm_mday << ", "
<< now->tm_hour << ":" << now->tm_min << ":" << now->tm_sec
<< endl;
cout << (now2->tm_year + 1900) << '-'
<< (now2->tm_mon + 1) << '-'
<< now2->tm_mday << ", "
<< now2->tm_hour << ":" << now2->tm_min << ":" << now2->tm_sec
<< endl;
}
このための一般的な出力は次のとおりです。
1320655946
1320655948
2011-11-7, 9:52:28
2011-11-7, 9:52:28
ご覧のとおり、time_t
タイムスタンプは正しいですが、現地時間はすべてを台無しにします。
私の質問は、タイムスタンプまたはタイプtime_t
を人間が読める時間に変換するにはどうすればよいですか?