1

私のプログラムはファイル時間を形式で受け取りulong、それをDateTime形式に変換する必要があります。これが私が書いた関数です。

public static DateTime fileTimeToDateTime(ulong fileTime)
{
    long temp = (long)fileTime;
    DateTime dt1 = DateTime.FromFileTime(temp);
    return dt1;
}

しかし、ファイルタイムの2213360000場合、関数は戻ります1/1/1601 12:00:00 AMが、正しいはずです。4/22/2009 3:28:29 PMそのため、このWebページを使用してファイルタイムを人間が読める時間に変換すると、正しい値が得られます。だから、私の機能に何か問題があるようです。次に、このコード ピースを使用して正しい日付を変換します。

string windowsTime = "4/22/2009 3:28:29 PM";
DateTime time = DateTime.Parse(windowsTime);
long ft = time.ToFileTime();

したがって、ここでの出力ft128848589090000000、取得したファイル時間ではありません ( 2213360000)。ですから、私の考え方には何か問題があるように見えます。何か案が?

4

2 に答える 2

2

FromFileTimeWindows のGetFileTime関数 (FILETIME構造体) からの出力が必要です。1601 年 1 月 1 日 (UTC) からの 100 ナノ秒間隔の数を測定します。

2213360000 100 ナノ秒間隔は約 0.02 秒です。

ここで確認すべきことは、どこから取得しているFILETIMEのか、またはメソッドの目的を誤解していないかということです。メソッドにフィードするコードで質問を更新できますか?

于 2014-08-10T04:34:11.250 に答える
1

リンクからのコンバーターが壊れている可能性を考慮しましたか? 数値を 9 桁減らし、2213360000 の代わりに 2 を入力して変換すると、2009 年 4 月 22 日が表示されますが、数分短くなります。

数値は FILETIME ではないようです。1970 年からの秒数の UNIX スタンプである可能性があります。その場合、日付は 2040 年 2 月 20 日午前 6 時 13 分になります。これらの単位での参考までに、今日の日付は 1407649082 です。

于 2014-08-10T05:46:36.730 に答える