/* static array used by both functions */ static int day_tab[2][13] = { { 0,31,28,31,30,31,30,31,31,30,31,30,31}, { 0,31,29,31,30,31,30,31,31,30,31,30,31} }; /* calculates the Julian day given year, month and day */ int md2j(int year,int month,int day) { int i, leap; leap = year%4 == 0 && year%100 != 0 || year%400 == 0; for(i=1; i< month; i++) day += day_tab[leap][i]; return(day); } /* calculates the month and day given year and Julian day */ j2md(int year,int yearday,int *pmonth,int *pday) { int i,leap; leap = year%4 == 0 && year%100 != 0 || year%400 == 0; for(i=1;yearday > day_tab[leap][i]; i++) yearday -= day_tab[leap][i]; *pmonth = i; *pday = yearday; }