невозможно преобразовать из FILETIME (время окна) в dateTime (я получаю другую дату)

Большинство файлов, которые я читаю, получают правильное время при использовании следующего метода преобразования:

// 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 " enter image description here

А вот FILETIME, который я пытаюсь преобразовать в DateTime «Кстати, мне нужен LastWriteTime»

enter image description here

Здесь вы можете видеть, что dwHighDateTime = 30136437, а также dwLowDateTime = -2138979250 из этого файла.

И когда я запускаю свой метод и другие техники, я получаю следующие даты: enter image description here

Пока вроде все работает отлично. Но почему, когда я просматриваю и ищу этот конкретный файл в Windows, я получаю другую дату !? Вот дата, которую я получаю при просмотре свойств файла: enter image description here

Почему даты не совпадают? Что я делаю неправильно?

11
задан Tono Nam 21 May 2011 в 18:45
поделиться