Это - достаточно беспорядочный архив сообщений конференций сети fidonet, которые на момент их прочтения мной
показались полезными или интересными. Многие устарели, многие узкоспецифичны и малоинтересны, но может оказаться и что-то новое...
- __techs (2:5015/42) ----------------------------------------------- __techs - Msg : 39 of 1000 Scn From : Boris Usievich 2:5020/47.4 22 Jun 96 14:35:58 To : Viktor Ostashev 22 Jun 96 23:36:58 Subj : UNIXdate - а теперь наоборот ------------------------------------------------------------------------------- @AREA:NICE.SOURCES Hello Viktor! 15 Jun 96 22:27, Viktor Ostashev wrote to Mike Karelin: VO> Так с этим пpоблем нет. Пpоблема в пpотивоположной задаче - VO> pаскpyтить yсловный ("абсолютный") номеp дня обpатно в датy, пpичем хотя VO> бы для любого дня нашей эpы (до нашей эpы не беpем). Очевидно, что задача VO> имеет единственное pешение. Hо похоже, что только пеpебоpом :((((((. -- Cut Here --------8<-------------------8<--------------- // // Convert a Julian day number to its corresponding Gregorian calendar // date. Algorithm 199 from Communications of the ACM, Volume 6, No. 8, // (Aug. 1963), p. 444. Gregorian calendar started on Sep. 14, 1752. // This function not valid before that. // void _BIDSNEARFUNC TDate::Mdy( MonthTy _BIDSFAR & m, DayTy _BIDSFAR & D, YearTy _BIDSFAR & y ) const { unsigned long d; JulTy j = Julnum - 1721119L; y = (YearTy) (((j<<2) - 1) / 146097L); j = (j<<2) - 1 - 146097L*y; d = (j>>2); j = ((d<<2) + 3) / 1461; d = (d<<2) + 3 - 1461*j; d = (d + 4)>>2; m = (MonthTy)(5*d - 3)/153; d = 5*d - 3 - 153*m; D = (DayTy)((d + 5)/5); y = (YearTy)(100*y + j); if( m < 10 ) m += 3; else { m -= 9; y++; } } -- Cut Here --------8<-------------------8<--------------- кусок выдран из Борландовского classlib'а. Желающие получать даты начиная с начала нашей эры могут попытаться понять, как это работает и модифицировать ;) Sincerely yours, Boris Usievich --- GoldED/386 2.50+ * Origin: borisu@kapella.gpi.ru (2:5020/47.4)