ファイルの作成日時、最終アクセス日時、最終更新日時を取得するには GetFileTime()関数を利用します。GetFileTime()関数は、 FILETIME形式で日時を取得できます。普段利用しているような年/月/日などの SYSTEMTIMEで取得したい場合は、FileTimeToSystemTime()関数で、FILETIME形式から SYSTEMTIME形式に変換する事ができます。
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <windows.h>
/*
FILETIMEの表示
*/
void DispFileTime
(
TCHAR* wpDispName
, FILETIME* tpFileTime
)
{
SYSTEMTIME tSystemTime;
// FILETIMEをSYSTEMTIMEに変換する
::FileTimeToSystemTime( tpFileTime, &tSystemTime );
const static TCHAR* wpaWeekName[] = {
L"日", L"月", L"火", L"水", L"木", L"金", L"土"
};
// 名称
wprintf( L"%s¥n", wpDispName );
// SYSTEMTIME表示
wprintf( L"¥t%04d/%02d/%02d(%s) %02d:%02d:%02d.%03d¥n"
, tSystemTime.wYear
, tSystemTime.wMonth
, tSystemTime.wDay
, wpaWeekName[ tSystemTime.wDayOfWeek ]
, tSystemTime.wHour
, tSystemTime.wMinute
, tSystemTime.wSecond
, tSystemTime.wMilliseconds
);
// 改行
wprintf( L"¥n" );
}
/*
ファイルの作成日時、最終アクセス日時、最終更新日時を取得する
*/
int _tmain
(
int argc
, _TCHAR* argv[]
)
{
// 標準出力にユニコード出力する
setlocale( LC_ALL, "Japanese" );
// ファイルのオープン
HANDLE hFile = ::CreateFile(
L"c:¥¥org¥¥test1.txt"
, 0
, 0
, NULL
, OPEN_EXISTING
, FILE_ATTRIBUTE_NORMAL
, NULL
);
// オープン確認
if ( INVALID_HANDLE_VALUE != hFile ) {
FILETIME tCreationTime; // 作成日時
FILETIME tLastAccessTime; // 最終アクセス日時
FILETIME tLastWriteTime; // 最終更新日時
// ファイルの作成日時、最終アクセス日時、最終更新日時を取得する。
if ( 0== ::GetFileTime( hFile, &tCreationTime, &tLastAccessTime, &tLastWriteTime ) ) {
std::wcout << L"取得失敗しました。" << std::endl;
}
else {
// ファイルの作成日時の表示
DispFileTime( L"ファイルの作成日時", &tCreationTime );
// 最終アクセス日時の表示
DispFileTime( L"最終アクセス日時", &tLastAccessTime );
// 最終更新日時の表示
DispFileTime( L"最終更新日時", &tLastWriteTime );
}
// ファイルのクローズ
::CloseHandle( hFile );
}
// 正常終了
return( 0 );
}
ファイルの作成日時
2013/01/24(木) 14:46:25.826
最終アクセス日時
2013/01/24(木) 14:46:25.826
最終更新日時
2013/01/24(木) 14:46:25.826