当我打印文件的创建时间时,为什么它比实际文件创建时间提前 +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
:-)
当我在我的程序中打印文件的创建时间时发生了一件奇怪的事情。 这个问题发生在我的 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
:-)