Не продемонстрирует ли всезнающий ALL, конкретный алгоритм преобразования внутреннего формата времени и даты (64-х битный формат) в человеческий формат и обратно. Применение функций API не подходит, так как все надо реализовать под голым DOS'ом. Может у кого завалялся исходник?
смотри на sources.ru там есть фишка "FAQ", можешь сразу ее всю себе скачать и там это все есть и многое другое по досу на асьме...
ganes Спасибо за информацию об этом сайте. К сожалению нужной там информации я не нашел. Мне требуется проебразовать время из формата восьмибайтовог вещественного числа (double), представляющего дату в промежутке между 1 января 1753 и 31 декабря 2078 года. Это значение присутствует в записи FILE Record NTFS. Это мне нужно для разработки файлового менеджера для, который будет работать из DOS с томомами NTFS и манипулировать длинными именами. В упомянутом выше "FAQ" таких функций я не нашел. Если я неправ, то готов понести "пинания ногами".
Кажется я нашел почему точка отсчета такая странная, 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.