ファイル システムが NTFS である限り、ファイル時刻は常に UTC として保存されます。
の実装をSystem.IO.FileInfo.CreationTime
見ると、次のことがわかります。
public DateTime CreationTime
{
get
{
return this.CreationTimeUtc.ToLocalTime();
}
set
{
this.CreationTimeUtc = value.ToUniversalTime();
}
}
ご覧のとおり、これは のラッパーでありCreationTimeUtc
、便宜上現地時間に変換されているだけです。およびプロパティは同じように機能しますLastWriteTime
。LastAccessTime
したがって、最初から特定のタイム ゾーンのローカル タイムがスタンプされることはないため、別のタイム ゾーンがスタンプされるようにファイルを変更することはできません。それらは UTC でスタンプされます。
それを他のタイムゾーンに変換したい場合は、それを読む途中でそれを行ってください.
FileInfo fi = new FileInfo(path);
DateTime utc = fi.CreationTimeUtc;
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime eastern = TimeZoneInfo.ConvertTimeFromUtc(utc, tzi);
のように、本質的に同じことを行う同様のメソッドがSystem.IO.File
クラスの外にあることに注意してください。File.GetCreationTimeUtc()
使いやすい方を使用してください。
また、これはFAT/FAT32 ファイル システムには当てはまらないことに注意してください。これらのファイル システムでは、サーバーのローカル タイムスタンプが使用されます。ファイルをある場所から別の場所に移動すると、タイムスタンプが誤って解釈される可能性があります。