Время в заголовке РЕ файла

Тема в разделе "FASM", создана пользователем Marylin, 24 апр 2024.

  1. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    124
    Всем привет!
    Как правильно преобразовать 32-битное поле "TimeDataStamp" в строку?
    Известно, что это кол-во секунд начиная с 01.01.1970 (время unix), а штатных функций Win32 что-то не найду. Пробовал пару DosDateTimeToFileTime() + FileTimeToSystemTime(), но она ожидаемо возвращает неверный результат, т.к. предназначена для упакованных по 16-бит data/time, а не для счётчика секунд. Сейчас реализовал вручную по схеме ниже и получаю валидное время, а вот с датой иногда глюки, т.к. не учитываются високосные года (и может что-то ещё).

    Код (Text):
    1. year     = (timestamp/31104000) % 365 ;
    2. month    = (timestamp/1036800) % 12;
    3. day      = (timestamp/43200) % 30;
    4. hours    = (timestamp/3600) % 24;
    5. minutes  = (timestamp/60) % 60;
    6. seconds  = (timestamp) % 60;
    7.  
     
  2. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.331
    MaKsIm, Mikl___ и Marylin нравится это.
  3. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    124
    rmn, благодарю - всё совпадает.