如何比较两个FILETIME变量以查看文件是否超过30天

How to comapre 2 FILETIME variables to see if a file is older than 30 days

本文关键字:文件 是否 30天 FILETIME 比较 何比较 两个 变量      更新时间:2023-10-16

我想检查一个文件夹是否超过30天,并有以下代码

static bool ExpiredDirectory(CComBSTR directory)
{
    WIN32_FILE_ATTRIBUTE_DATA fileAttrData = {0};
    GetFileAttributesEx(directory, GetFileExInfoStandard, &fileAttrData);
    FILETIME ftCreatedDate = fileAttrData.ftCreationTime;
    FILETIME now;
    SYSTEMTIME nowst;
    ULARGE_INTEGER t1, t2;
    GetSystemTime(&nowst);
    SystemTimeToFileTime(&nowst, &now);
      ---compare code goes here
}

我想比较一下上面的变量,看看ftCreatedDate是否大于30天

我在SYSTEMTIME上的30天差异帮助下修复了这个问题。结果这个人也想这么做。

我的代码现在是

WIN32_FILE_ATTRIBUTE_DATA fileAttrData = {0};
GetFileAttributesEx(directory, GetFileExInfoStandard, &fileAttrData);
FILETIME ftCreationTime = fileAttrData.ftCreationTime;
FILETIME now;
SYSTEMTIME nowst;
ULARGE_INTEGER t1, t2;
GetSystemTime(&nowst);
SystemTimeToFileTime(&nowst, &now);
memcpy(&t1, &ftCreationTime, sizeof(t1));
memcpy(&t2, &now, sizeof(t1));
ULONGLONG diff = (t1.QuadPart<t2.QuadPart)?(t2.QuadPart-t1.QuadPart):(t1.QuadPart-t2.QuadPart);
if(diff>30*24*60*60*(ULONGLONG)10000000)
{
    return true;
}
return false;