0

私のWebアプリケーションでは、フォルダー/ファイルの作成中、CreatedDateまたはModifiedDateサーバー時間として取っているときに、フォルダーとファイルを動的に作成しています..

CreatedDateまたはを現地時間に設定したいModifiedDate..これを行う方法..

フォルダーを作成するための私のコード

DirectoryInfo dirDptFolder = new DirectoryInfo(strDptRoot);
if (dirDptFolder.Exists == false)
{
    dirDptFolder.Create();
}
4

3 に答える 3

0

ユーザーごとにタイムゾーンが異なる場合はどうなりますか? データをユーザーに表示するときに、ユーザー時間に変換するだけではどうですか? :)

ユーザーにタイムゾーンの入力を求めるか、javascript を使用してタイムゾーンを検出して Cookie に保存することができます。これを行うにはさまざまな方法がありますが、これを実行できるスクリプトを 1 つ示しますhttps://bitbucket.org/pellepim/jstimezonedetect

クッキーもいろいろな方法で保存できますが、私はjqueryが好きです。 http://plugins.jquery.com/cookie/

次に、サーバー側で Cookie を読み取り、他の人が言及した方法を使用して時間をそのタイムゾーンに変換できます。

于 2013-10-10T08:15:05.600 に答える
0

ファイル システムが NTFS である限り、ファイル時刻は常に UTC として保存されます。

の実装をSystem.IO.FileInfo.CreationTime見ると、次のことがわかります。

public DateTime CreationTime
{
  get
  {
    return this.CreationTimeUtc.ToLocalTime();
  }
  set
  {
    this.CreationTimeUtc = value.ToUniversalTime();
  }
}

ご覧のとおり、これは のラッパーでありCreationTimeUtc、便宜上現地時間に変換されているだけです。およびプロパティは同じように機能しますLastWriteTimeLastAccessTime

したがって、最初から特定のタイム ゾーンのローカル タイムがスタンプされることはないため、別のタイム ゾーンがスタンプされるようにファイルを変更することはできません。それらは 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 ファイル システムには当てはまらないことに注意してください。これらのファイル システムでは、サーバーのローカル タイムスタンプが使用されます。ファイルをある場所から別の場所に移動すると、タイムスタンプが誤って解釈される可能性があります。

于 2013-10-10T15:50:59.613 に答える