ファイルの日時を設定するには次の関数群を使います。(戻る)
- システム時間からファイル日時に変換(SystemTimeToFileTime)
- ローカル時間からファイル日時に変換(LocalFileTimeToFileTime)
- ファイル日時の設定(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, <1 ); // 作成日時 SystemTimeToFileTime( &st2, <2 ); // 最終アクセス日時 SystemTimeToFileTime( &st3, <3 ); // 最終更新日時 // ローカル時刻からファイル時刻に変換 LocalFileTimeToFileTime( <1, &ft1 ); // 作成日時 LocalFileTimeToFileTime( <2, &ft2 ); // 最終アクセス日時 LocalFileTimeToFileTime( <3, &ft3 ); // 最終更新日時 // ファイル日時の設定 SetFileTime( hFile, &ft1, &ft2, &ft3 );
- hFile にオープンされたファイル・ハンドルを指定します。
- フォルダの場合はオープン時に FILE_FLAG_BACKUP_SEMANTICS フラグを指定します。
- このフラグを指定しないと正しく処理できません。
※コメント投稿者のブログIDはブログ作成者のみに通知されます