{ I need an accurate method of converting back and Forth between Gregorian and Julian dates. if anyone } Procedure GregoriantoJulianDN; Var Century, XYear : LongInt; begin {GregoriantoJulianDN} if Month <= 2 then begin Year := pred(Year); Month := Month + 12; end; Month := Month - 3; Century := Year div 100; XYear := Year mod 100; Century := (Century * D1) shr 2; XYear := (XYear * D0) shr 2; JulianDN := ((((Month * 153) + 2) div 5) + Day) + D2 + XYear + Century; end; {GregoriantoJulianDN} {**************************************************************} Procedure JulianDNtoGregorian; Var Temp, XYear : LongInt; YYear, YMonth, YDay : Integer; begin {JulianDNtoGregorian} Temp := (((JulianDN - D2) shl 2) - 1); XYear := (Temp mod D1) or 3; JulianDN := Temp div D1; YYear := (XYear div D0); Temp := ((((XYear mod D0) + 4) shr 2) * 5) - 3; YMonth := Temp div 153; if YMonth >= 10 then begin YYear := YYear + 1; YMonth := YMonth - 12; end; YMonth := YMonth + 3; YDay := Temp mod 153; YDay := (YDay + 5) div 5; Year := YYear + (JulianDN * 100); Month := YMonth; Day := YDay; end; {JulianDNtoGregorian} {**************************************************************} Procedure GregoriantoJulianDate; Var Jan1, today : LongInt; begin {GregoriantoJulianDate} GregoriantoJulianDN(Year, 1, 1, Jan1); GregoriantoJulianDN(Year, Month, Day, today); JulianDate := (today - Jan1 + 1); end; {GregoriantoJulianDate} {**************************************************************} Procedure JuliantoGregorianDate; Var Jan1 : LongInt; begin GregoriantoJulianDN(Year, 1, 1, Jan1); JulianDNtoGregorian((Jan1 + JulianDate - 1), Year, Month, Day); end; {JuliantoGregorianDate}