Я ищу способ сэкономить время в формате HH :: MM :: SS на C ++. Я увидел здесь, что у них много решений, и после небольшого исследования я выбрал 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
в удобочитаемое время?