Я читаю некоторые значения Microsoft FileTime, сохраненные как long, и пытаюсь преобразовать их в удобочитаемую дату.
Например, значение 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
, оба дают одинаковый (неправильный) результат.
Любые предложения будут с благодарностью.
Спасибо