ファイルの日時を取得するには次の関数群を使います。(戻る)
- ファイル日時の取得(GetFileTime)
- ファイル日時からローカル時間に変換(FileTimeToLocalFileTime)
- ファイル日時からシステム時間に変換(FileTimeToSystemTime)
この関数群はフォルダも同じように操作できます。
プロトタイプ宣言
BOOL GetFileTime( HANDLE hFile, // ファイルのハンドル LPFILETIME lpCreationTime, // 作成日時 LPFILETIME lpLastAccessTime, // 最終アクセス日時 LPFILETIME lpLastWriteTime // 最終更新日時 ); BOOL FileTimeToLocalFileTime( CONST FILETIME* lpFileTime, // 世界標準時間のファイル時刻 LPFILETIME lpLocalFileTime // ローカル時間のファイル時刻 ); BOOL FileTimeToSystemTime( CONST FILETIME* lpFileTime, // 変換前のファイル時刻 LPSYSTEMTIME lpSystemTime // 変換後のシステム日時 );
構造体
typedef struct _FILETIME { DWORD dwLowDateTime; // 下位32ビット DWORD dwHighDateTime; // 上位32ビット } FILETIME, *PFILETIME; typedef struct _SYSTEMTIME { WORD wYear; // 年(1901~) WORD wMonth; // 月(1-12) WORD wDayOfWeek; // 曜日(0-6) WORD wDay; // 日(1-31) WORD wHour; // 時(0-23) WORD wMinute; // 分(0-59) WORD wSecond; // 秒(0-59) WORD wMilliseconds; // ミリ秒(0-999) } SYSTEMTIME, *PSYSTEMTIME;
サンプル
FILETIME ft1, ft2, ft3; // ファイル時刻 FILETIME lt1, lt2, lt3; // ローカル時刻 SYSTEMTIME st1, st2, st3; // システム日時 // ファイル日時の取得 GetFileTime( hFile, &ft1, &ft2, &ft3 ); // ファイル時刻からローカル時刻に変換 FileTimeToLocalFileTime( &ft1, <1 ); // 作成日時 FileTimeToLocalFileTime( &ft2, <2 ); // 最終アクセス日時 FileTimeToLocalFileTime( &ft3, <3 ); // 最終更新日時 // ローカル時刻からシステム日時に変換 FileTimeToSystemTime( <1, &st1 ); // 作成日時 FileTimeToSystemTime( <2, &st2 ); // 最終アクセス日時 FileTimeToSystemTime( <3, &st3 ); // 最終更新日時 // 作成日時をprintf()で表示 printf( TEXT("%04d/%02d/%02d (%d) %02d:%02d:%02d.%03d\n"), st1.wYear, // 年(1901-) st1.wMonth, // 月(1-12) st1.wDay, // 日(1-31) st1.wDayOfWeek, // 曜日(0-6) st1.wHour, // 時(0-23) st1.wMinute, // 分(0-59) st1.wSecond, // 秒(0-59) st1.wMilliseconds // ミリ秒(0-999) );
- hFile にオープンされたファイル・ハンドルを指定します。
- フォルダの場合はオープン時に FILE_FLAG_BACKUP_SEMANTICS フラグを指定します。
- このフラグを指定しないと正しく処理できません。
※コメント投稿者のブログIDはブログ作成者のみに通知されます