小编wan*_*gzj的帖子

从 struct tm 转换为 std::time_t 并转换回日期将被更改

我尝试使用以下示例代码从 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)

日期已更改,有人能告诉我我在这里做错了什么吗?我认为时区不会造成如此不同的日期

c++ time

0
推荐指数
1
解决办法
65
查看次数

标签 统计

c++ ×1

time ×1