0

我似乎无法使用 winapi 函数获得可靠的时间戳。例如:

int main(int argc, char *argv[])
{
处理文件;
BY_HANDLE_FILE_INFORMATION 信息;
SYSTEMTIME 系统时间;

文件 = CreateFile("test.txt",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
GetFileInformationByHandle(file,&finfo);
FileTimeToSystemTime(&finfo.ftLastWriteTime, &systime);
printf(" %s %02d:%02d:%02d %d/%d/%d\n", "test.txt", systime.wHour,systime.wMinute,systime.wSecond,systime.wDay,systime.wMonth ,systime.w 年);
}

对我的所有文件都毫无意义,例如:

测试.txt 00:03:30 33/5/3

wDay 的值似乎超出了 1-31 的范围,并且时间和日期完全错误。BY_HANDLE_FILE_INFORMATION 中的所有其他值(如名称和大小)都是正确的,在我的完整代码中,我检查所有函数的错误,但它们都返回通过。有人知道我在做什么错吗?

4

1 回答 1

0

我认为问题在于您使用filesize.QuadPart. 尝试从格式字符串和参数列表中删除它,看看它是否有效。

如果这有帮助,请查找正确的格式字符串以用于printf().

于 2009-04-30T00:21:46.357 回答