static void weekofyear(int year,int month,int day, int *rtn_year,int *rtn_week,int *rtn_day) { int firstday=dayofweek(year,0,0); int doy=dayofyear(year,month,day); if(firstday>=5) { firstday-=7; if(firstday+doy<0) { weekofyear(year-1,12-1,31-1, rtn_year,rtn_week,rtn_day); *rtn_day+=doy+1; return; } } if(firstday!=4 && (firstday+doy)/7>=52) { *rtn_year=year+1; *rtn_week=0; *rtn_day=(firstday+doy)-52*7; } else { *rtn_year = year; *rtn_week = (firstday+doy)/7; *rtn_day = (firstday+doy)%7; } }
int main(int argc, const char *argv[]) { int y, m, d; printf("Please input y:m:d\n"); scanf("%d:%d:%d", &y, &m, &d); printf("%d:%d is %d of year %d!\n", m, d, dayofyear(y, m, d), y); return 0; }
int main(void) { int iyear, imonth, idate; int idays; getinput(&iyear, &imonth, &idate); idays = dayofyear(iyear, imonth, idate); output(idays); return 0; }
static int dayofweek(int year,int month,int day) { int dow=0; int x; if(year<1899) { fprintf(stderr,"Sorry, day of week function is broken for year before 1899\n"); exit(-1); } /* Jan 1, 1899 is a sunday */ for(x=1899;x!=year;++x) if(isleapyear(x)) dow+=2; else dow+=1; dow+=dayofyear(year,month,day); return dow%7; }
int ex5_8(){ int year, month, day; year = 2013; month = 4; day = 14; int numberofdays = dayofyear(year, month, day); if(numberofdays > 0){ printf("\nThere have been %d days since the start of the year.\n", numberofdays); int monthforp = 0; int dayforp = 0; monthday(year, numberofdays, &monthforp, &dayforp); printf("\nYou gave me the year %d, so that means its the %d month and %d day.\n", year, monthforp, dayforp); } return 0; }