トニー:
私は長いとして保存され、いくつかの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#の変換がよりまっすぐであることを推測しますが、年が間違っている理由を私は理解することはできません。私は両方を試してみたUInt64
とInt64
、両方とも同じ(間違った)結果を与えます。
任意の提案をいただければ幸いです。
感謝
マシュー・ワトソン:
これは、に内蔵されるDateTime
ので、任意の調整を行う必要はありません。
var date = DateTime.FromFileTimeUtc(131733712713359180);
このリターン 2018-06-13 13:47:51