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

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

ファイル日時の設定

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

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

  1. システム時間からファイル日時に変換(SystemTimeToFileTime)
  2. ローカル時間からファイル日時に変換(LocalFileTimeToFileTime)
  3. ファイル日時の設定(SetFileTime)

この関数群はフォルダも同じように操作できます。

プロトタイプ宣言

BOOL SetFileTime(
    HANDLE              hFile,              // ファイルのハンドル
    CONST FILETIME*     lpCreationTime,     // 作成日時
    CONST FILETIME*     lpLastAccessTime,   // 最終アクセス日時
    CONST FILETIME*     lpLastWriteTime     // 最終更新日時
);

BOOL LocalFileTimeToFileTime(
    CONST FILETIME*     lpLocalFileTime,    // ローカル時間のファイル時刻
    LPFILETIME          lpFileTime          // 世界標準時間のファイル時刻
);

BOOL SystemTimeToFileTime(
    CONST SYSTEMTIME*   lpSystemTime,       // 変換前のシステム日時
    LPFILETIME          lpFileTime          // 変換後のファイル時刻
);

構造体

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;      // システム日時

// 現在の日時を構造体にセット
GetLocalTime( &st1 );
GetLocalTime( &st2 );
GetLocalTime( &st3 );

// システム日時からローカル時刻に変換
SystemTimeToFileTime( &st1, &lt1 );         // 作成日時
SystemTimeToFileTime( &st2, &lt2 );         // 最終アクセス日時
SystemTimeToFileTime( &st3, &lt3 );         // 最終更新日時

// ローカル時刻からファイル時刻に変換
LocalFileTimeToFileTime( &lt1, &ft1 );      // 作成日時
LocalFileTimeToFileTime( &lt2, &ft2 );      // 最終アクセス日時
LocalFileTimeToFileTime( &lt3, &ft3 );      // 最終更新日時

// ファイル日時の設定
SetFileTime( hFile, &ft1, &ft2, &ft3 );
  • hFile にオープンされたファイル・ハンドルを指定します。
  • フォルダの場合はオープン時に FILE_FLAG_BACKUP_SEMANTICS フラグを指定します。
  • このフラグを指定しないと正しく処理できません。

関連記事



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

コメントを投稿

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