提问人:BlueCannonBall 提问时间:8/2/2022 更新时间:8/2/2022 访问量:153
MKTime返回错误的时间
mktime returning the wrong time
问:
我有两个函数用于创建日期字符串和解析日期字符串。创建有效,但解析器似乎增加了 5 小时的时间。就上下文而言,我的时区是 EST,比 GMT 晚 5 小时。如何解决这个问题?功能如下:
std::string build_date(time_t rawtime) {
struct tm* timeinfo = gmtime(&rawtime);
std::stringstream ss;
ss.imbue(std::locale(setlocale(LC_ALL, "C")));
ss << std::put_time(timeinfo, "%a, %d %b %Y %T %Z");
return ss.str();
}
time_t parse_date(const std::string& date) {
struct tm timeinfo = {0};
std::istringstream ss(date);
ss.imbue(std::locale(setlocale(LC_ALL, "C")));
ss >> std::get_time(&timeinfo, "%a, %d %b %Y %T %Z");
return mktime(&timeinfo);
}
答: 暂无答案
评论
mktime
是 的倒数,不是localtime
gmtime
std::get_time
的文档中没有看到列出,因此您的时区可能被忽略了。%Z