Это - достаточно беспорядочный архив сообщений конференций сети fidonet, которые на момент их прочтения мной
показались полезными или интересными. Многие устарели, многие узкоспецифичны и малоинтересны, но может оказаться и что-то новое...
- __techs (2:5015/42) ----------------------------------------------- __techs - Msg : 36 of 1000 Scn From : Viktor Ostashev 2:5020/753.3 19 Jun 96 23:30:52 To : Mark Lobanov 21 Jun 96 07:01:50 Subj : Интеpвал между датами ------------------------------------------------------------------------------- @AREA:NICE.SOURCES Oтвeт нa пиcьмo Mark Lobanov (2:463/721.2@fidonet) к All oт 17 июня 1996 г., 18:27 Hello Mark! ML> Соppи, tormozz я, гpохнул по ошибке:-( type tdate = record d : byte; m : byte; y : integer; end; tstyle = (grigorian, julian); function numofday(dat : tdate; style : tstyle) : longint; {Вычисляет условный номер дня для даты dat с учетом нового стиля} var stcor : integer; begin inc(dat.m); if dat.m <= 3 then begin dat.m := dat.m+12; dec(dat.y); end; if style = grigorian then stcor := 2-dat.y div 100+dat.y div 400 else stcor := 0; numofday := trunc(365.25*dat.y)+trunc(30.6*dat.m)+stcor+dat.d; end; function dayofweek(dat : tdate; style : tstyle) : byte; {Вычисляет день недели для даты dat с учетом стиля} var sum : real; day : byte; buf : longint; begin buf := numofday(dat, style); sum := buf+4.5; day := trunc(7*(sum/7-trunc(sum) div 7)); if day = 0 then day := 7; dayofweek := day; end; function lenofmonth(month : byte; year : word; style : tstyle) : byte; {Вычисляет длину месяца с учетом стиля} var len : byte; begin case month of 2 : begin if year mod 4 = 0 then len := 29 else len := 28; if (style = grigorian) and (year mod 100 = 0) and (year mod 400 > 0) then len := 28; end; 4, 6, 9, 11 : len := 30 else len := 31; end; lenofmonth := len; end; C yвaжeниeм - Bиктop Ocтaшeв --- --------------------------------------- * Origin: █▓▒░ ФИЗKУЛЬТ - ПРИBEТ BBS ░▒▓█ (2:5020/753.3)