#include <time.h>
#include <chrono>
#include <iostream>
#include <string>
int main() {
time_t now = time(nullptr); //获取UTC时间
tm local_tm_now;
if (localtime_r(&now, &local_tm_now) == nullptr) {
return 1;
}
const time_t local_now = std::mktime(&local_tm_now); //得到当地日历时间
tm local_tm_create;
std::string str_time = "20210209101004";
if (strptime(str_time.c_str(), "%Y%m%d%H%M%S", &local_tm_create) == nullptr) {
return 2;
}
if (difftime(local_now, std::mktime(&local_tm_create)) >= 1800) {
return 3; // GCC10 GLIBC2.29 will return here
}
return 0; // GCC4 GLIBC2.21 will return here
}
解决方法:
tm local_tm_create.tm_isdst = 0;