文字列にFILETIME

トニー:

私は長いとして保存され、いくつかのMicrosoft FILETIME値を、読んでいる、と私は人間が読める日付に変換しようとしています。

たとえば、値が131733712713359180に変換されますWednesday, June 13, 2018 1:47:51pm:これは、ここにオンラインツールを使用して行われたオンライン時間コンバータを

私は、Javaの罰金で働いてそれを持っているが、私はC#でそれを実行しようとするとき、私は間違っ年取得しています。私が手出力は次のようになります13/06/0418 13:47:51

私は、変換を行うために使用しているコードは次のとおりです。

public string CalculateTimestamp(Int64 epoch)
{
    DateTime date = DateTime.Now;

    try
    {
        date = new DateTime(epoch);
        DateTime filetime = new DateTime(date.ToFileTime());
        result = filetime.ToString();
    }
    catch (Exception uhoh)
    {
        result = "failedtoparsetimestamp";
    }

    return result;
}

Javaで変換を行うとき、これは私が使用しているコードです。

public String calculateTimeStamp(long epoch) {

    if (epoch == 0) {
        return "--";
    }

    long unixDifference = 11644473600000L;

    long timeStamp = (epoch / (10 * 1000)) - unixDifference;

    Date date = new Date(timeStamp);

    return date.toString();
}

私はC#の変換がよりまっすぐであることを推測しますが、年が間違っている理由を私は理解することはできません。私は両方を試してみたUInt64Int64、両方とも同じ(間違った)結果を与えます。

任意の提案をいただければ幸いです。

感謝

マシュー・ワトソン:

これは、に内蔵されるDateTimeので、任意の調整を行う必要はありません。

var date = DateTime.FromFileTimeUtc(131733712713359180);

このリターン 2018-06-13 13:47:51

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=206537&siteId=1