プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

ファイル日時の取得

2007年09月13日 14時23分18秒 | ファイル関連

ファイルの日時を取得するには次の関数群を使います。(戻る)

  1. ファイル日時の取得(GetFileTime)
  2. ファイル日時からローカル時間に変換(FileTimeToLocalFileTime)
  3. ファイル日時からシステム時間に変換(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, &lt1 );      // 作成日時
FileTimeToLocalFileTime( &ft2, &lt2 );      // 最終アクセス日時
FileTimeToLocalFileTime( &ft3, &lt3 );      // 最終更新日時

// ローカル時刻からシステム日時に変換
FileTimeToSystemTime( &lt1, &st1 );         // 作成日時
FileTimeToSystemTime( &lt2, &st2 );         // 最終アクセス日時
FileTimeToSystemTime( &lt3, &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 フラグを指定します。
  • このフラグを指定しないと正しく処理できません。

関連記事



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ファイル属性の取得/設定 | トップ | ファイル日時の設定 »
最新の画像もっと見る

コメントを投稿

ファイル関連」カテゴリの最新記事