Всем привет! Как правильно преобразовать 32-битное поле "TimeDataStamp" в строку? Известно, что это кол-во секунд начиная с 01.01.1970 (время unix), а штатных функций Win32 что-то не найду. Пробовал пару DosDateTimeToFileTime() + FileTimeToSystemTime(), но она ожидаемо возвращает неверный результат, т.к. предназначена для упакованных по 16-бит data/time, а не для счётчика секунд. Сейчас реализовал вручную по схеме ниже и получаю валидное время, а вот с датой иногда глюки, т.к. не учитываются високосные года (и может что-то ещё). Код (Text): year = (timestamp/31104000) % 365 ; month = (timestamp/1036800) % 12; day = (timestamp/43200) % 30; hours = (timestamp/3600) % 24; minutes = (timestamp/60) % 60; seconds = (timestamp) % 60;
Код (Text): (uint64_t)time_t * 10000000 + 116444736000000000 == FILETIME https://learn.microsoft.com/en-us/windows/win32/sysinfo/converting-a-time-t-value-to-a-file-time