0

C#Compactエディション6.5の新機能。実際のシステム時刻から5時間ずれているように見えるファイルに日時を設定しようとしています。私はファイルを作成するためにこれだけを行っています:

        FileStream fs= File.Create(name);  

これを行うだけで、作成日は5時間先になります... CreationTimeを設定しようとすると、属性が読み取り専用であるというコンパイルエラーが発生します。

        FileInfo fi = new FileInfo(name);
        fi.CreationTime = date;

私の質問は、C#を初めて使用するため、CEフレームワークの「読み取り専用」属性にどのようにアクセスできるかということです。P / Invokeについて言及しているようですが、属性ではなくメソッドでのみ機能するようです。誰でもこれを行う方法について簡単なデモを行うことができますか?

私はこの解決策を試しましたが、現在の現地時間でファイルを送信しても、UTCを書き込むファイルを取得します

4

2 に答える 2

1

私はこれを実行しました:

[MTAThread]
static void Main()
{
    var name = "\\foo.txt";
    var info = new FileInfo(name);
    using (info.Create()) { }
    info.Refresh();
    var createTime = info.CreationTime;
    var now = DateTime.Now;
    var delta = now - createTime;
    Debug.WriteLine(delta.ToString());
}

そして、この出力を取得しました:

00:00:00.0140000

これは私には正しいようです。

于 2011-08-22T18:37:39.930 に答える
0

ファイルのCreationTimeを変更することはできません。ファイルの作成時に一度だけ設定されます。P / Invokeを使用して時刻を設定する場合は、この同様の質問を確認できます-c#-CompactFrameworkでファイルLastWriteDateを変更します

ただし、問題をハッキングする代わりに、根本的な原因を修正する必要があります。ファイルの作成時間に問題がある場合は、システムの時間設定(タイムゾーンを含む)を確認することを検討します。

于 2011-08-22T16:40:57.913 に答える