Вы должны позаботиться об использовании файлового времени, если пользователь заставил систему автоматически переключаться на летнее время.
Чтобы преобразовать файловое время в местное, используйте функцию FileTimeToLocalFileTime. Однако, FileTimeToLocalFileTime использует текущие параметры настройки для часового пояса и летнего времени. Поэтому, если это будет летнее время, то принимается во внимание летнее время, даже тогда, когда файловое время, которое Вы преобразуете, находится в стандартном времени.
Система FAT делает запись времени на диске в формате местного времени. Функция GetFileTime извлекает кэшированное универсальное глобальное время (UTC) из FAT. Когда время становится летним, то время, найденное GetFileTime должно начинаться с часа, потому что кэш не был обновлен. Когда Вы перезапускаете компьютер, кэшированное время, извлеченное GetFileTime, должно быть правильным. FindFirstFile извлекает местное время от FAT и преобразует его в универсальное глобальное время (UTC), используя текущие параметры настройки для часового пояса и летнего времени. Поэтому, если это будет летнее время, то FindFirstFile примет во внимание летнее время, даже тогда, когда файловое время, которое Вы преобразуете, находится в стандартном времени.
Система NTFS делает запись времени на диске в формате универсального глобального времени (UTC). Чтобы принять во внимание летнее время, при преобразовании файлового времени в местное, используйте нижеследующие функции вместо FileTimeToLocalFileTime: