当我打印文件的创建时间时,为什么它比实际文件创建时间提前 +7:00 小时?

When I print the creation time of a file, why is it +7:00 hours ahead of the actual file creation time?

当我在我的程序中打印文件的创建时间时发生了一件奇怪的事情。 这个问题发生在我的 Mac machine 以及 我的 Windows machine.

我的程序输出的创建时间比实际创建时间(我检查文件的属性)提前 7 小时

比如properties中,一个文件的创建时间是 2020 年 6 月 2 日 02:44:10 下午

我程序的输出显示 2020 年 6 月 2 日 09:44:10 下午

对于我测试的所有文件(windows 和 mac),这个 +7:00 时差都是正确的。

我程序中的这段代码(工作)负责查找和打印创建时间:

#include <iostream>
#include <sys/types.h>
#include <sys/stat.h>
#include <iomanip>

//Converts Unix time to regular time
int convertEpochTime()
{
    std::uint32_t time_date_stamp = buf.st_ctime;
    std::time_t temp = time_date_stamp;
    std::tm* t = std::gmtime(&temp);
    std::cout << "[" << std::put_time(t, "%m-%d-%Y %I:%M:%S %p") << "]" << std::endl;
    
    return 0;
}

//Gets file creation time
int main()
 {
    
     stat("testfile.txt",&buf);
     convertEpochTime();

     return 0;

 }

为什么输出的创建时间和实际创建时间相差+7:00?我该如何解决这个问题?

gmtime 函数为您提供 UTC 时间(gm 指的是格林威治标准时间,尽管它们有细微的差别,一个 标准 和一个 zone),不是当地时间。因此,您几乎可以肯定处于距离 UTC 七小时的时区。

如果你想要当地时间,我确定这里某处有一个功能。哦,是的,它是:localtime :-)