2

フォルダーが 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 日以上経過しているかどうかを確認したい

4

1 に答える 1

1

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;
于 2013-05-02T14:32:22.640 に答える