|
ocssw
1.0
|
00001 static int days[] = {-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 00002 00003 int daysInYear(int year) 00004 { 00005 if ( (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ) 00006 return 366; 00007 else return 365; 00008 } 00009 00010 int daysInMonth(int year, int month) 00011 { 00012 if( (month==2) && (daysInYear(year)==366)) return 29; 00013 else return days[month]; 00014 } 00015 00016 int getCalDay(int year, int jday, int *month, int *day) 00017 { 00018 int i,sub_days,mdays; 00019 sub_days = jday; 00020 for (i = 1; i < 13; i++) { 00021 mdays = daysInMonth(year,i); 00022 sub_days -= mdays; 00023 if(sub_days <= 0) 00024 break; 00025 } 00026 if(sub_days == 0) { 00027 *month = i; 00028 *day = daysInMonth(year,i); 00029 } 00030 else { 00031 *month = i; 00032 *day = daysInMonth(year,i) + sub_days; 00033 } 00034 return 0; 00035 } 00036 00037 int getJulianDay(int year, int month, int day) 00038 { 00039 int i; 00040 int julday = 0; 00041 00042 if(month < 1 || month > 12) 00043 return -1; 00044 if(day < 1 || day > daysInMonth(year,month)) 00045 return -1; 00046 for(i = 1; i < month; i++) 00047 julday += daysInMonth(year,i); 00048 julday += day; 00049 return julday; 00050 }
1.7.6.1