преобразование 64-х битного формата времени в человечиский формат и обратно

Тема в разделе "WASM.ASSEMBLER", создана пользователем recover2, 30 дек 2004.

  1. recover2

    recover2 New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2004
    Сообщения:
    3
    Адрес:
    Russia
    Не продемонстрирует ли всезнающий ALL, конкретный алгоритм преобразования внутреннего формата времени и даты (64-х битный формат) в человеческий формат и обратно.

    Применение функций API не подходит, так как все надо реализовать под голым DOS'ом.

    Может у кого завалялся исходник?
     
  2. ganes

    ganes New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2004
    Сообщения:
    62
    Адрес:
    Ukraine
    смотри на sources.ru там есть фишка "FAQ", можешь сразу ее всю себе скачать и там это все есть и многое другое по досу на асьме...
     
  3. recover2

    recover2 New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2004
    Сообщения:
    3
    Адрес:
    Russia
    ganes

    Спасибо за информацию об этом сайте.

    К сожалению нужной там информации я не нашел.

    Мне требуется проебразовать время из формата восьмибайтовог вещественного числа (double), представляющего дату в промежутке между 1 января 1753 и 31 декабря 2078 года. Это значение присутствует в записи

    FILE Record NTFS. Это мне нужно для разработки файлового менеджера для, который будет работать из DOS с томомами NTFS и манипулировать длинными именами.

    В упомянутом выше "FAQ" таких функций я не нашел.

    Если я неправ, то готов понести "пинания ногами".
     
  4. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Кажется я нашел почему точка отсчета такая странная,

    http://roadfork.narod.ru/calendar.htm#94 конец раздела 2.5:



    Швеция имеет любопытную историю перехода на новый стиль. Швеция решила делать постепенный переход от Юлианского к Григорианскому календарю. Чтобы пропустить 11 лишних дней решили просто не учитывать високосные годы с 1700 до 1740. 1 марта 1740 была бы синхронизировано с Григорианским календарем. (Но тем временем они были бы не согласованы ни с кем).



    Так 1700 (который должен быть високосным по Юлианскому календарю) не был високосным в Швеции. Однако по ошибке 1704 и 1708 стали високосными годами, поэтому они решили вернуться к юлианскому стилю. Чтобы сделать это, был введен дополнительный день в 1712 г, приведя к двойному високосному году с февралем в 30 дней.



    Позднее, в 1753 г Швеция перешла к григорианскому календарю, пропустив 11 дней, как и остальные страны.





    А вот что я нашел в MSDN, описание функции SystemTimeToVariantTime:



    A variant time is stored as an 8-byte real value (double), representing a date between January 1, 1753 and December 31, 2078, inclusive. The value 2.0 represents January 1, 1900; 3.0 represents January 2, 1900, and so on. Adding 1 to the value increments the date by a day. The fractional part of the value represents the time of day. Therefore, 2.5 represents noon on January 1, 1900; 3.25 represents 6:00 A.M. on January 2, 1900, and so on. Negative numbers represent the dates prior to December 30, 1899.