Большинство файлов, которые я читаю, получают правильное время при использовании следующего метода преобразования:
// works great most of the time
private static DateTime convertToDateTime(System.Runtime.InteropServices.ComTypes.FILETIME time)
{
long highBits = time.dwHighDateTime;
highBits = highBits << 32;
return DateTime.FromFileTimeUtc(highBits + time.dwLowDateTime);
}
Здесь у меня есть пример в Visual Studio, чтобы показать, как это метод иногда не работает, например, я покажу фактический файл на моем компьютере и отладку. Итак, файл, который оказался в моей отладке:
"A: \ Users \ Tono \ Documents \ Visual Studio 2010 \ Projects \ WpfApplication4 \ WpfApplication4 \ obj \ x86 \ Debug \ App.g.cs "
А вот FILETIME, который я пытаюсь преобразовать в DateTime «Кстати, мне нужен LastWriteTime»
Здесь вы можете видеть, что dwHighDateTime = 30136437, а также dwLowDateTime = -2138979250 из этого файла.
И когда я запускаю свой метод и другие техники, я получаю следующие даты:
Пока вроде все работает отлично. Но почему, когда я просматриваю и ищу этот конкретный файл в Windows, я получаю другую дату !? Вот дата, которую я получаю при просмотре свойств файла:
Почему даты не совпадают? Что я делаю неправильно?