http://en.wikipedia.org/wiki/Julius_Caesar
ژولیوس سزار که با سزارین http://en.wikipedia.org/wiki/Caesarian_section بدنیا آمد تقویمی طراحی کرد که سالها کاربرد داشت.
او مردی بود شبیه فیل که سکه ای طرح فیل هم در دوران او رواج داشت.
اما سزار معروف یک دو ماه به تقویم آن زمان اضافه کرد که یکی نام خودش بود.
اخترشناسان برای کار با تقویمها از دیرزمان این تقویم را مورد استفاده قرار می دادند.
فعلا تا بعد ...
روز ژولیوسی مبنای کار برای محاسبات زیر است:
تبدیل تقویمها به هم.
محاسبات نجومی.
Azimuth, Longitude برای خورشید و ماه.
::: پس :::
برای محاسبات طلوع و غروب خورشید این تقویم استفاده می شود.
در تقویمی که قبلا ارائه کرده ام روز ژولیوسی با تابع gregorian_jdn محاسبه می شود. یعنی تابع زیر :
#DEFINE GREGORIAN ISO_8601
Function Gregorian_jdn
LPARAMETERS iYear,iMonth,iDay,CalendarType
LOCAL lnYear,lnMonth,lnDay
IF PARAMETERS() < 4
CalendarType = GREGORIAN
ENDIF
IF CalendarType = GREGORIAN And ((iYear > 1582) OR ;
((iYear = 1582) And (iMonth > 10)) OR ;
((iYear = 1582) And (iMonth = 10) And (iDay > 14))) THEN
lnYear = iYear
lnMonth = iMonth
lnDay = iDay
RETURN INT((1461 * (lnYear + 4800 + INT((lnMonth - 14) / 12))) / 4) ;
+ INT((367 * (lnMonth - 2 - 12 * (INT((lnMonth - 14) / 12)))) / 12) ;
- INT((3 * (INT((lnYear + 4900 + INT((lnMonth - 14) / 12)) / 100))) / 4) ;
+ lnDay - 32075
ELSE
RETURN julian_jdn(iYear, iMonth, iDay)
ENDIF
ENDFUNC
یعنی اگر تاریخ ارائه شده از ۱۴ / ۱۰ / ۱۵۸۲ میلادی بیشتر بود از این تابع نبود از تابع زیر استفاده کن. دلیلش این است که در این تاریخ پاپ گریگوری تقویم را اصلاح کرد به و فرم امروزی آن در آورد پس تقویم میلادی جدید گریگوری است.
FUNCTION julian_jdn
PARAMETERS tnYear,tnMonth,tnDay
RETURN 367 * tnYear - INT((7 * (tnYear + 5001 + INT((tnMonth - 9) / 7))) / 4) + INT((275 * tnMonth) / 9) + tnDay + 1729777
ENDFUNC
توجه کنید که ISO یک استاندارد برای تقویم دارد:
http://www.phys.uu.nl/~vgent/calendar/isocalendar.htm
که شما می توانید از آن استفاده کنید. شماره آن ISO 8601:1998
به جای این تابع فاکس پرو خودش تابع دارد:
SYS(11,{^1996-12-12})
یعنی روز ژولیوسی تاریخ فوق را بر می گرداند.
اما ممکن است شما روز ژولیوسی را داشته باشید با تابع :
sys(10,2450430)
و
sys(1)
هم روز ژولیوسی تاریخ کامییوتر را نشان می دهد یعنی معادل زیر است:
sys(11,date())