我尝试使用以下示例代码从 struct tm 转换为 std::time_t:
void test_time_t() {
tm time;
time.tm_year = 2004-1900;
time.tm_mon = 11;
time.tm_mday = 5;
time.tm_hour = 12;
time.tm_min = 2;
char buff[25];
strftime(buff, 20, "%Y %b %d %H:%M",&time);
printf("%s\n",buff);
auto t = std::mktime(&time);
struct tm *tmp = localtime(&t);
strftime(buff, 20, "%Y %b %d %H:%M",tmp);
printf("%s\n",buff);
}
Run Code Online (Sandbox Code Playgroud)
这将输出:
2004 Dec 05 12:02
2005 Jun 16 22:41
Run Code Online (Sandbox Code Playgroud)
日期已更改,有人能告诉我我在这里做错了什么吗?我认为时区不会造成如此不同的日期