Что бы вы ни делали с time_t
, вам, вероятно, лучше всего использовать библиотеку <chrono>
. Затем вы можете конвертировать в и из time_t
, если это необходимо. Надеюсь, вы можете просто сделать то, что вам нужно в <chrono>
#include <chrono>
int main() {
auto a = std::chrono::system_clock::now()
time_t b = std::chrono::system_clock::to_time_t(a);
auto c = std::chrono::system_clock::from_time_t(b);
}
Обновление:
Стандартная библиотека C ++ пока не имеет API для дат, а <chrono>
- для времени. Вы можете использовать библиотеку дат Boost или использовать библиотеку дат C:
#include <ctime>
#include <chrono>
#include <iostream>
int main() {
std::tm epoch_start = {};
epoch_start.tm_sec = 0;
epoch_start.tm_min = 0;
epoch_start.tm_hour = 0;
epoch_start.tm_mday = 1;
epoch_start.tm_mon = 0;
epoch_start.tm_year = 70;
epoch_start.tm_wday = 4;
epoch_start.tm_yday = 0;
epoch_start.tm_isdst = -1;
std::time_t base = std::mktime(&epoch_start);
auto diff = std::chrono::system_clock::now() - std::chrono::system_clock::from_time_t(base);
std::chrono::seconds s = std::chrono::duration_cast<std::chrono::seconds>(diff);
std::cout << s.count() << '\n';
}