次の方法で共有


ファイル時間

ファイル時刻 は、1601 年 1 月 1 日午前 12 時から経過した 100 ナノ秒間隔 (UTC) の数を表す 64 ビット値です。 システムは、アプリケーションがファイルを作成、アクセス、およびファイルに書き込むときに、ファイル時刻を記録します。

NTFS ファイル システムは UTC 形式で時刻値を格納するため、タイム ゾーンや夏時間の変更の影響を受けません。 FAT ファイル システムは、コンピューターの現地時刻に基づいて時刻値を格納します。 たとえば、ワシントンの PST の午後 3 時に保存されたファイルは、NTFS ボリュームではニューヨークの午後 6 時 00 分 EST と見なされますが、FAT ボリュームではニューヨークでは午後 3 時 00 分 EST と見なされます。

タイムスタンプは、さまざまなタイミングで、さまざまな理由で更新されます。 ファイル タイム スタンプに関する唯一の保証は、変更を行うハンドルが閉じられたときにファイル時刻が正しく反映されるということです。

すべてのファイル・システムが作成時刻と最終アクセス時間を記録できるわけではありません。また、すべてのファイル・システムが同じ方法でそれらを記録するわけではありません。 たとえば、FAT での作成時間の解像度は 10 ミリ秒ですが、書き込み時間の解像度は 2 秒で、アクセス時間の解像度は 1 日であるため、実際にはアクセス日です。 NTFS ファイル システムは、ファイルの最終アクセス時刻の更新を最後のアクセスから最大 1 時間遅らせることができます。

指定したファイルのファイル時刻を取得するには、GetFileTime 関数を使用します。 GetFileTime は、作成、最終アクセス、および最後の書き込み時刻を個々の FILETIME 構造体にコピーします。 FindFirstFile と FindNextFile関数をして、ファイル時刻を取得することもできます。 これらの関数は、ファイル時刻を WIN32_FIND_DATA 構造体内の FILETIME 構造体に コピーします。 ファイルに書き込むときに、書き込みに使用されるすべてのハンドルが閉じられるまで、最後の書き込み時刻は完全には更新されません。

ファイルのファイル時刻を設定するには、SetFileTime 関数を使用します。 この関数を使用すると、ファイルの内容を変更せずに、作成、最後のアクセス、および最後の書き込み時間を変更できます。 CompareFileTime 関数を使用して、さまざまなファイルの時間を比較できます。 この関数は、2 つのファイル時刻を比較し、後の時刻を示す値を返し、時刻が等しい場合は 0 (ゼロ) を返します。

指定したファイルのファイル時刻を変更する場合は、SystemTimeToFileTime 関数を使用して、日付と時刻をファイル時刻に変換できます。 GetSystemTimeAsFileTime 関数を呼び出すことによって、FILETIME 構造体のシステム時刻を取得することもできます。

ファイル時刻をユーザーに簡単に表示できるようにするには、FileTimeToSystemTime 関数を使用します。 FileTimeToSystemTime は、ファイル時刻を変換し、月、日、年、時刻をファイル時刻から SYSTEMTIME 構造体にコピーします。

ファイル時刻と夏時間

ユーザーが夏時間に合わせて自動的に調整するようにシステムを設定している場合は、ファイル時刻を使用するときに注意する必要があります。

ファイル時刻をローカル時刻に変換するには、FileTimeToLocalFileTime 関数を使用します。 ただし、FileTimeToLocalFileTime は、タイム ゾーンと夏時間の現在の設定を使用します。 そのため、夏時間の場合は、変換するファイル時刻が標準時であっても、夏時間が考慮されます。

FAT ファイル システムは、ディスク上の時刻をローカル時刻で記録します。 getFileTimeは、FAT ファイル システムからキャッシュされた UTC 時刻を取得します。 夏時間になると、GetFileTime によって取得された時刻は、キャッシュが更新されないため、1 時間が経過しません。 コンピューターを再起動すると、GetFileTime が取得 キャッシュされた時間が正しいものです。 FindFirstFile FAT ファイル システムから現地時刻を取得し、タイム ゾーンと夏時間の現在の設定を使用して UTC に変換します。 そのため、夏時間の場合、変換するファイル時刻が標準時であっても、FindFirstFile は夏時間を考慮に入れて使用します。

NTFS ファイル システムは、ディスク上の時刻を UTC で記録します。 ファイル時刻をローカル時刻に変換するときに夏時間を考慮するには、FileTimeToLocalFileTimeを使用するのではなく、次の一連の関数を使用します。

ファイル時間と CDFS

Compact Disc File System (CDFS) を使用してメディア上にある、またはメディアから送信されたファイルの日付と時刻のスタンプは、ローカル タイム ゾーンに合わせて調整されます。 ISO 9660 は、CDFS がローカル タイム ゾーンの日付情報を正しく表示することを示しています。 これにより、CDFS 上のファイルの日付がユニバーサル ディスク形式 (UDF) の日付と同じように表示されます。 UDF は、配布メディアの新しい標準です。 コードが CDFS を使用してメディアに存在するか、メディアから送信されたファイルの変更されていない日付情報に依存している場合は、正しく機能しない可能性があります。