Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用stat API获得错误的文件修改时间_C++_C_Windows_Winapi - Fatal编程技术网

C++ 使用stat API获得错误的文件修改时间

C++ 使用stat API获得错误的文件修改时间,c++,c,windows,winapi,C++,C,Windows,Winapi,在获取文件的修改时间时,我看到一个奇怪的行为。 我们一直在调用方法来获取项目中的文件修改,如下所示 int my_win_stat( const char *path, struct _stati64 *buf) { if(_stati64( path, buf) == 0) { std::cout<<buf->st_mtime << std::endl; //I added to ensure if value is not changing els

在获取文件的修改时间时,我看到一个奇怪的行为。 我们一直在调用方法来获取项目中的文件修改,如下所示

int my_win_stat( const char *path, struct _stati64 *buf)
{  
 if(_stati64( path, buf) == 0)
 {
   std::cout<<buf->st_mtime << std::endl; //I added to ensure if value is not changing elsewhere in the function.
 }
 ...........
 ...........
}
int my\u win\u stat(const char*path,struct\u stati64*buf)
{  
如果(_stati64(路径,buf)==0)
{

Unix时间非常容易处理。它是自1970年1月1日以来的秒数(即0表示该特定日期)

现在,您要说的是,您正在使用浏览器中的第三方工具测试您的时间(mtime),并希望它能为您提供正确的答案。因此,让我们做一个测试,以下数字是2015年9月1日00:00:00 GMT

1441065600
如果您转到Epoch Converter并使用该值,它是否为您提供了正确的GMT?(如果没有,则有些地方确实错误。)然后查看本地时间值,看看您是否获得了GMT午夜的预期值。(请注意,我使用GMT,因为Epoch Converter使用该缩写,但正确的缩写是UTC。)

在我看来,您的代码很可能提取了正确的时间,但是本地时间的历元转换器在您的计算机上出现故障

请注意,你可以在C++程序中用类似的方法测试:

std::cerr << ctime(&buf->st_mtime) << std::endl;

一年后,我遇到了类似的问题,但情况却不太一样。但这次我明白了为什么有一个+2 30h的差距。我通过Perl脚本执行C++程序,实习生设置了时区<代码> GMT-3”/CODE >,我的机器已经在时区GMT +5:30。“2:30小时”的e部分。 为什么?正如哈利在书中提到的

在Perl中更改时区可能会导致设置TZ环境变量,这会影响C运行时库


两种情况下都是同一个文件系统?我知道一些Linux文件系统不存储修改日期,这可以解释为什么它没有提供正确的数据?@MatstPetersson是的,它是windows上的NTFS7@MatsPetersson:好奇:那是哪一个?@Olaf:啊,我可能错了,我想是“访问时间”这在某些文件系统上是不受支持的……这可能是时区问题吗?如果差异是恒定的,我会朝这个方向研究。
1441065600
std::cerr << ctime(&buf->st_mtime) << std::endl;